Reutilizar componentes y vistas es una práctica fundamental cuando trabajas con formularios en Laravel. Aquí se muestra cómo configurar la creación de preguntas aprovechando todo lo construido previamente para la edición, logrando un flujo eficiente con pocos cambios en el controlador, las relaciones del modelo y las vistas Blade.
¿Cómo se configura el controlador para crear preguntas?
El punto de partida es el controlador [0:08]. Si ya cuentas con los métodos de editar y actualizar, puedes copiarlos como base para los métodos de crear y almacenar. Los ajustes necesarios son directos:
- El método de crear necesita cargar las categorías disponibles y llamar a una vista específica de creación [0:25].
- A diferencia de editar, no se requiere pasar una entidad existente, ya que estamos generando un registro nuevo.
- El método de almacenamiento (store) sigue necesitando la validación de los datos del formulario [0:51].
- La creación se realiza a partir del usuario logueado, utilizando la relación
user()->preguntas()->create() [0:57].
- Tras guardar, se redirige al usuario a la ventana principal [1:06].
Este patrón es muy común en Laravel: validar, crear a través de una relación y redirigir.
¿Cómo reutilizar los campos del formulario entre crear y editar?
Una técnica clave es compartir los campos del formulario entre la vista de creación y la de edición [2:33]. Para lograrlo, se envía la misma variable de entidad a ambas vistas. Cuando estamos creando, esa variable llega como un valor nulo [2:43], lo que permite que los campos se rendericen vacíos sin errores.
- Se crea la vista
crear.blade.php copiando la estructura de edición [1:28].
- El título se actualiza a algo descriptivo como "Preguntar a la comunidad" [1:35].
- Se ajusta la acción del formulario para apuntar a la ruta store en lugar de update [1:56].
- Los campos del formulario se mantienen idénticos, ya que reciben sus valores de la entidad compartida.
Esta estrategia evita duplicar código en ambas vistas. Los campos se definen una sola vez y funcionan tanto para crear como para editar [2:50].
¿Qué relación del modelo se debe registrar?
Para que el proceso funcione correctamente, es necesario registrar la relación entre usuario y preguntas en el modelo User [1:42]. Un usuario ya tenía definida la relación con respuestas, pero también necesita declarar que tiene muchas preguntas (hasMany). Sin esta relación, la línea user()->preguntas()->create() del controlador fallaría.
¿Cómo se conecta el botón de preguntar?
En el componente de la interfaz se configura el botón "Preguntar" [1:14] para que apunte a la ruta con el nombre correspondiente, usando la convención punto create. De esta forma, al hacer clic, el usuario accede directamente al formulario de creación.
¿Qué resultado se obtiene al probar el flujo completo?
Al verificar en el navegador [2:02]:
- Se selecciona una categoría y se mantiene correctamente tras enviar.
- El título y el cuerpo de la pregunta se guardan sin problemas.
- La pregunta se crea asociada al usuario autenticado.
- Al visitar la pregunta, se puede responder de inmediato.
Todo el proceso se resume en: diseñar el formulario, agregar el enlace para preguntar, registrar la relación en el modelo y ejecutar los métodos del controlador [2:17]. Son pocos cambios gracias a la reutilización de componentes, y esa es precisamente la ventaja de aplicar esta técnica en proyectos con Laravel.