Editar post
Comprar curso

136. Editar post

En este capítulo, descubre cómo editar un post en Laravel 10. Aprende cómo utilizar el generador de scaffolding de Laravel para crear una vista edit y cómo personalizar la vista para tus necesidades.


3 comentarios

Inicia sesión para comentar

Comentarios:

  • Victor Arana Flores

    Victor Arana Flores hace 1 año Destacado

    Para editar un post en Laravel 10, se pueden seguir los siguientes pasos:

    1. Crear una ruta en el archivo routes/web.php que apunte a un controlador para manejar la edición del post. Por ejemplo:
    Route::get('/posts/{post}/edit', 'PostController@edit')->name('posts.edit');

    2. En el controlador PostController, crear el método edit para obtener el post que se desea editar y cargar la vista edit con los datos del post. Por ejemplo:

    public function edit(Post $post)
    {
       return view('posts.edit', compact('post'));
    }

    3. Crear una vista edit en la carpeta resources/views/posts con un formulario que permita editar los datos del post. Por ejemplo:

    @extends('layouts.app')
    @section('content')
       <div class="container">
           <h1>Edit Post</h1>
           <form method="POST" action="{{ route('posts.update', $post) }}">
               @csrf
               @method('PUT')
               <div class="form-group">
                   <label for="title">Title</label>
                   <input type="text" class="form-control" id="title" name="title" value="{{ old('title', $post->title) }}">
               </div>
               <div class="form-group">
                   <label for="body">Body</label>
                   <textarea class="form-control" id="body" name="body">{{ old('body', $post->body) }}</textarea>
               </div>
               <button type="submit" class="btn btn-primary">Save Changes</button>
           </form>
       </div>
    @endsection

    4. Crear una ruta en el archivo routes/web.php que apunte a un controlador para actualizar los datos del post en la base de datos. Por ejemplo:

    Route::put('/posts/{post}', 'PostController@update')->name('posts.update');

    5. En el controlador PostController, crear el método update para actualizar los datos del post en la base de datos y redirigir al usuario a la vista del post actualizado. Por ejemplo:

    public function update(Request $request, Post $post)
    {
       $validatedData = $request->validate([
           'title' => 'required|max:255',
           'body' => 'required',
       ]);
       $post->update($validatedData);
       return redirect()->route('posts.show', $post);
    }

    Con estos pasos, se podrá editar un post en Laravel 10.

  • Jorge Gatica

    Jorge Gatica hace 7 meses

    Hola Víctor, con respecto al problema que mencionas que ocasiona al cambiar el slug. Que decías que te provocaba errores 404. Esto podria solucionarlo, indicandole al modelo que en vez de buscar por id, busque por el campo slug. Con esta funcion lo haces desde el modelo.

    Espero que te sirva y a quien lo quiera probar

    public function getRouteKeyName()
    {
         return 'slug';
    }

     

  • Yean Martinez

    Yean Martinez hace 1 año

    Buen Dia Victor, porfa agradezco su colaboración para la solución de este inconveniente que no logro solucionar, tengo una tabla con un campo ‘documento’ que es único, para la creación no hay problemas y se ejecutan las reglas de validación si intento ingresar un numero de documento repetido, pero el inconveniente viene cuando yo quiero realizar alguna actualización de datos de la persona, ya que al enviar el formulario de Update me genera error que el documento ya existe y no actualiza los datos. 

    Aqui estan los datos de mi Controller:

    public function update(Request $request, Atleta $atleta)

        {

            $request->validate([

                'documento' => 'required|integer|unique:atletas,documento',

                'primer_nombre' => 'required|string|max:20',

                'segundo_nombre' => 'string|max:20',

                'primer_apellido' => 'required|string|max:20',

                'segundo_apellido' => 'string|max:20',

                'fecha_nac' => 'required|date',

                'edad' => 'required|integer',

                'telefono' => 'required|string|max:12',

                'email' => 'required|string',

                'sexo' => 'required|string|max:9',

                'categoria_id' => 'required|integer|exists:categorias,id',

                'direccion' => 'required|string',

                'observaciones' => 'required'

            ]);

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

            return redirect()->route('atletas.edit', $atleta);

        }

     

    Que se tendria que hacer para que no genere este error al intentar actualizar y sea el mismo documento. Pero tambien teniendo en cuenta que si ingreso al formulario de actualización y modifico el documento por alguno otro que exista en la base de datos me genere el error de validación.

     

    Muchas Gracias de antemano y espero su pronta respuesta

    • Victor Arana Flores hace 1 año

      Hola estimado Yean, si recien estas aprendiendo te recomendaría que veas los capitulos sin saltartelos. Ya que en esta misma lección donde has hecho la pregunta, respondo a tu incoveniente.