No tienes acceso a esta clase

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

Código de guardar

14/20
Recursos

Aportes 6

Preguntas 2

Ordenar por:

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

Me gusta que en Laravel puedes crear datos y guardarlos en tan solo 3 líneas de código, y esto es genial y tampoco implica un problema de seguridad porque para eso son las validaciones, de hecho las validaciones no se deberían hacer ahí (en un proyecto real, por motivos del curso y practicar está bien), pero en un proyecto real, las validaciones de Laravel se hacen en un archivo aparte y si no mal recuerdo se pasaban como una inyección de dependencias 👀

Código de guardar


Ya que copiamos el código del archivo Edit.vue, tenemos que modificar el método submit para que realmente envié los datos a store y los cree en la base de datos.

				methods: {
            submit() {
                this.$inertia.post(this.route('notes.store'), this.form)
            }
        }

Ahora tenemos que modificar el método store en el controlador de esa ruta. Aquí vamos a validar los datos, después obtenerlos y mandarlos todos a la base de datos, y por último redirigirnos a la ruta de edición de esa misma nota que hemos creado

		public function store(Request $request)
    {
        $request->validate([
            'excerpt' => 'required',
            'content' => 'required'
        ]);

        $note = Note::create($request->all());

        return redirect()->route('notes.edit', $note->id);
    }

Para mi fue preferible una vez que se guarda el nuevo registro, es decir la nota nueva, en vez de remitir a editar que es un formulario idéntico, lo mando a show, que no deja editar, dando cuenta del exito a la hora de guardar el registro.

Hay una manera un poco más eficiente desde mi perspectiva para evitar las redirecciones, y ahorrarse una petición al servidor. Todo consiste simplemente en usar las funciones en vez de las redirecciones y aprovechar el poder de esta gran herramienta.

public function store(Request $request)
    {
        $request->validate([
            'excerpt' => 'required',
            'content' => 'required',
        ]);

        $note = Note::create($request->all());

        return $this->show($note);
    }

Lo mismo se puede hacer para la función de actualizar.

public function update(Request $request, Note $note)
    {
        $request->validate([
            'excerpt' => 'required',
            'content' => 'required',
        ]);

        $note->update($request->all());

        return $this->index();
    }

Esto se puede mejorar un poco más separando las validaciones en sus archivos respectivos y el asunto seria aun más simple y estético.

Si estoy bien, o mal o hay una mejor solución espero me la hagan saber.