Crud con Laravel 5: Update

laravel

Tercera parte del crud con Laravel 5, si no has visto las entradas anteriores te recomiendo que lo hagas ya que hacemos los pasos previos a este tutorial, primera (create) y segunda (read) parte.

En esta ocasión vamos a actualizar nuestros posts, para ello tenemos dos opciones, duplicar el formulario de crear posts o utilizar form model, nosotros vamos a utilizar la segunda, así podremos utilizar el formulario de crear posts también para hacer la edición, sólo tendremos que hacer algunos cambios.

Lo primero que debemos hacer para darle un poco de sentido a todo es cambiar el nombre del archivo create.blade.php alojado en resources/views/posts por createUpdate.blade.php, ahora abre el archivo y reemplaza el tag form por lo siguiente.

@if(isset($post))
  {!! Form::model($post, ['route' => ['post.update', $post->id], 'method' => 'patch']) !!}
@else
 {!! Form::open(['route' => 'post.store']) !!}
@endif
Con ese poco código laravel 5 sabe si es un formulario para crear o editar y escribirá los campos si es necesario con los datos del post.

Ahora abre el archivo PostController y primero modifica el nombre de la vista del método create.

/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
  return view("posts.createUpdate");
}
Y ahora modifica el método edit por el siguiente que simplemente carga el formulario para editar.
/**
* Show the form for editing the specified resource.
*
* @param  int  $id
* @return Response
*/
public function edit($id)
{
 return view('posts.createUpdate')->with('post', \App\Post::find($id));
}
Finalmente sólo nos queda editar el post, para ello debemos modificar el método update.
/**
* Update the specified resource in storage.
*
* @param  int  $id
* @return Response
*/
public function update($id, PostForm $postForm)
{
  $post = \App\Post::find($id);
 
  $post->title = \Request::input('title');
 
  $post->body = \Request::input('body');
 
  $post->save();
 
 return redirect()->route('post.edit', ['post' => $id])->with('message', 'Post updated');
}
Y eso es todo, pero para mejorar nuestro trabajo, vamos a añadir un par de enlaces para movernos por las páginas de nuestra aplicación, primero en el archivo resources/views/posts/index.blade.php.
<div class="row">
  <div class="col-md-3 pull-right">
   {!! Html::link(route('post.create'), 'Crear', array('class' => 'btn btn-info btn-md pull-right')) !!}
       </div>
/*....................*/
Y ahora haz lo mismo con el archivo resources/views/posts/createUpdate.blade.php.
<div class="row">
  <div class="col-md-3 pull-right">
   {!! Html::link(route('post.create'), 'Crear', array('class' => 'btn btn-info btn-md pull-right')) !!}
       </div>
/*....................*/
En el siguiente tutorial veremos cómo eliminar nuestros posts, espero que te haya gustado y si es así te agradezco que compartas mi trabajo en las redes sociales.

Comentarios

Comentarios