No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Introducción a Laravel 6

Curso de Introducción a Laravel 6

Profesor Italo Morales F

Profesor Italo Morales F

Implementación del formulario de creación

22/37
Recursos

¿Cómo se crea un formulario para la creación de nuevos elementos?

La creación de formularios en aplicaciones web es una de las tareas esenciales para permitir la interacción del usuario con el sistema. En esta sección, exploraremos cómo construir un formulario dirigido a la creación de elementos, en este caso, artículos para un blog. El enfoque es sencillo y directo, usando el lenguaje de PHP para gestionar vistas y formularios.

¿Cómo estructurar las vistas para el formulario?

Primero, es crucial definir la vista correcta en la estructura de nuestro proyecto. Para el formulario de creación de artículos, debemos:

  • Retornar la vista adecuada desde el controlador. Esta debe estar ubicada en la carpeta resources/views/posts.
  • Crear un nuevo archivo llamado create.blade.php que contendrá el HTML formateado por el framework elegido.
public function create()
{
    return view('posts.create');
}

¿Qué debe contener el formulario?

El formulario es un elemento HTML que debe ser cuidadosamente configurado para cumplir con los requisitos de interacción con el servidor. Los pasos básicos incluyen:

  1. Formulario y su acción: Definimos el formulario con la ruta donde se enviarán los datos y especificamos el método POST.

    <form action="{{ route('posts.store') }}" method="POST" enctype="multipart/form-data">
    
  2. Configuración del método y tipo de datos: Es necesario asegurar que el formulario tenga un protocolo de encriptación.

    <form enctype="multipart/form-data">
    
  3. Campos del formulario: Añadimos los input para el título, la imagen, el contenido y un embebido, cada uno con su respectiva etiqueta y configuraciones CSS para la clase form-control.

¿Cómo organizar los elementos del formulario?

Para un diseño efectivo y limpio, organizamos los inputs dentro de divs configurados con clases de Bootstrap:

  • Campo de Título: Campo obligatorio de texto.
  • Campo de Imagen: No es obligatorio, tipo archivo.
  • Contenido del artículo: Uso de un textarea para permitir más caracteres, configurado a nivel de filas.
  • Campo de Embebido: Un campo no obligatorio similar al contenido.
  • Botón de Envío: Configurado con la clase btn btn-primary.
<div class="form-group">
    <label for="title">Título *</label>
    <input type="text" name="title" class="form-control" required>
</div>

<div class="form-group">
    <label for="image">Imagen</label>
    <input type="file" name="image" class="form-control">
</div>

<div class="form-group">
    <label for="content">Contenido *</label>
    <textarea name="body" rows="6" class="form-control" required></textarea>
</div>

<div class="form-group">
    <label for="embed">Embebido</label>
    <textarea name="embed" class="form-control"></textarea>
</div>

<div class="form-group">
    <button type="submit" class="btn btn-primary">Enviar</button>
</div>

¿Qué aspectos adicionales debemos considerar?

  • Validation visual: HTML ofrece una validación visual directamente en el frontend. Sin embargo, se debe complementar con validación del lado del servidor.
  • Pruebas: Después de crear el formulario, es crucial probarlo para asegurarse de que todos los campos funcionan correctamente y los datos se envían al servidor como se espera.

La implementación de este formulario te permite establecer una base sólida para futuras funcionalidades, donde los datos se procesarán y almacenarán en tu aplicación. Mantente motivado praticando y experimentando más con formularios y otras funcionalidades de la web.

Aportes 13

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Hola así quedaría

![](

<form 
                        action="{{ route('posts.store') }}" 
                        method="POST" enctype="multipart/form-data"
                    >
                        <div class="form-group">
                            <label for="title" class="font-weight-bold">Titulo *:</label>
                            <input type="text" name="title" id="title" class="form-control" placeholder="Titulo" required>
                        </div>

                        <div class="form-group custom-file">
                            <input type="file" class="custom-file-input" name="image" id="image">
                            <label class="custom-file-label" for="image" data-browse="Elige una imagen"><i class="far fa-file-image"></i> Elige una imagen</label>                           
                        </div>
                        
                        <div class="form-group">
                            <label for="body" class="font-weight-bold">Contenido *:</label>
                            <textarea class="form-control" name="body" id="body" rows="5" required></textarea>
                        </div>

                         <div class="form-group">
                            <label for="iframe" class="font-weight-bold">Contenido embebido:</label>
                            <textarea class="form-control" name="iframe" id="iframe"></textarea>
                        </div>

                        <div class="form-group text-center">
                            @csrf
                            <input type="submit" value="Enviar" class="btn btn-outline-primary col-2 btn-lg">
                        </div>

                    </form>

Recomiendo ponerle la clase “form-control-file” al input de tipo file para que Bootstrap le de algunos formatos igual:D

Para los que trabajan o desarrollan en VSCode recomiendo la extensión Bootstrap v4 Snippets
Ayuda mucho en la maquetación.

https://marketplace.visualstudio.com/items?itemName=Zaczero.bootstrap-v4-snippets

Formulario de Creacion
Ya tenemos el boton de crear blog con la ruta posts.create
asi que debemos crear ese method en en el PostController
9 
//ruta ya esta echa en el boton 
A)Controller
B)Views

A)
"PostController.php"
   public function create()
    {
        //carpeta/archivo
        return view("posts.create");
    }


B)
"Creamos /resources/views/posts/create.blade.php


```<form 
                        action="{{ route('posts.store') }}" 
                        method="POST" 
                        enctype="multipart/form-date"
                    >

                        <div class="form-group">
                            <label >Titulo *</label>
                            <input type="text" name="titulo" class="form-control" required>
                        </div>

                        <div class="form-group">
                            <label >Image </label>
                            <input type="file" name="file">
                        </div>

                        <div class="form-group">
                            <label >Contenido *</label>
                            <textarea name="body" required rows="6" class="form-control"></textarea>
                        </div>

                        <div class="form-group">
                            <label >Contenido embebido</label>
                            <textarea name="iframe" class="form-control"></textarea>
                        </div>

                        <div class="form-group">
                            @csrf
                            <input type="submit" value="Crear !" class="btn btn-sm btn-primary">
                        </div>

                    </form>

SI están en Laravel 8 + BS 5, para que se vea mejor espaciado, cada form-group se le puede agregar la clase mb-2:

 <div class="form-group mb-2">

¡Qué buen recurso tener un listado de clases relacionadas! 👏👏👏

hasta ahora todo va muy bien, excelente didactica profe.

Excelente la creacion del formulario

Para que en el formulario se conserve el formato agreguen
class=“form-control” a la image

Excelente, todo muy bien

Formulario de creación funcionando. Vamos por mas.

following