想更新电影内容,我们需要先把要更新的电影内容从数据库里面查询出来,然后把相应的数据恢复到一个更新内容的表单上 .. 用户在表单上去修改内容,提交以后,会把更新之后的内容再放到数据库里面。
先打开 MovieController 这个控制器 ... 在 Resource 类型的控制器里面, edit 方法就是去为更新内容准备一个表单。编辑内容的请求的地址是这样的 ... 基本的地址,加上要更新的内容的 id 号,然后是 edit ... 比如更新 id 是 1 的电影内容 .. 地址应该是 movies 斜线 1 斜线 edit ...
在这个方法里面,我们先根据这个请求里面的 id 号,去把数据从数据库里面查询出来 ..
可以使用 DB 类的 select 方法 ... SELECT 星号 ... FROM movies ... 从 movies 表里查询数据 ... 再设置一个条件 WHERE movie_id 等于问号 .. 根据请求的电影 id 号去查询数据 .. 在后面,去设置一下数组,用数组里面的项目,去匹配在这里的问号 ... array($id) ... $id 就是请求的时候发送过来的 id 号 ... 比如 movies/1/edit ... 这个 id 号就会是 1 。再去给这个查询出来的结果起个名字 ... $movie ...
另起一行 ... 可以给这个请求指定一个视图 ... 这个视图应该是一个用来更新内容的表单 ... 我们可以去重新创建一个这样的表单 ... 也可以使用之前用来发布电影内容的表单 ... 不过我们需要再去改进一个这个表单 ...
return View 冒号冒号 .. make ... 这个视图是在 movie 目录下面 ... 叫做的 form.blade.php ... 然后再把查询出来的结果传递给这个视图,这样在这个视图里面就可以使用这个结果里面的数据了 ... 因为我们需要把对应的电影内容恢复到表单的元素上面 .. 使用一个 with 方法 .. 传递过去以后叫它 movie .. 跟它对应的数据就是这个 $movie ...
public function edit($id)
{
$movie = DB::select('SELECT * FROM movies WHERE movie_id = ?', array($id));
return View::make('movie.form')->with('movie', $movie);
}
更新表单
再去编辑一下这个表单视图 ... views ... movie ... form.blade.php ..
现在,这里面的表单元素的值都是空白的 ... 这里我们需要去判断一下 ... 如果是要编辑电影内容的话 .... 表单元素的值应该是对应的要编辑的电影内容 ..
我们可以判断一下,是不是有 $movie 这个数据 ... 如果有的话,就说明是要编辑电影内容 ... 先修改一下电影标题这个字段的值 ...
可以使用 isset 来做判断 .. 判断的的东西就是 $movie ... 后面输入一个问号 ... 接着是如果条件是真的要显示的东西 ... $movie[0]->movie_title ... 去把 movie 里面的第一个项目里的 movie_title 里面的内容显示出来... 这里的内容就是要编辑的电影内容的电影标题 ...
再输入一个冒号 ... 去指定一下,如果没有 $movie 的时候,电影标题这个表单元素的值 ... 可以使用一个空白 ...
isset($movie)? $movie[0]->movie_title : ''
用同样的方法,我们再去编辑一下其它的表单元素的值 ...
isset($movie)? $movie[0]->movie_budget : ''
isset($movie)? $movie[0]->movie_date : ''
isset($movie)? '更新' : '发布'
页面上的大标题的内容也需要换一下 .. 这样更新电影的时候就显示更新电影这个标题,发布新的电影内容的时候,就显示发布电影 ...
isset($movie)? '更新电影' : '发布电影'
最后,我们还需要修改一下这个表单的提交的方法还有地址 ..
发布电影的时候,表单要使用 post 方法,提交到的地址是 movies ... 不过在更新电影的时候 ... 这个表单的提交方法应该是 put ... 并且,提交到的地址应该是对应的资源的地址 .. 比如要更新 movies 斜线 1 这个资源 ... 提交的时候,也要向 movies 斜线 1 这个地址去提交 ..
{{ Form::open(
array(
'url' => isset($movie)? 'movies/' .$movie[0]->movie_id : 'movies',
'class' => 'form-horizontal',
'method' => isset($movie)? 'PUT' : 'POST'
))
}}
预览
下面,我们去预览一下 ... 回到浏览器 .. 比如想要更新一个 movie_id 是 1 的电影内容 ... 它的编辑地址应该就是 movies/1/edit ...
这里会显示一个编辑电影内容的表单 ... 要编辑的电影内容的字段已经恢复到了对应的表单元素上面 ... 用户可以更改里面的内容 ... 然后点击 更新 .. 去发送更新内容的请求 ..
在下面的视频里,我们再去使用 DB 类的 update 方法,去把修改之后的内容,放到数据库里面。