在电影页面上发表评论 - 控制器

0
视频
0
完成
0%
进度
0
分钟
0
完成
0%
进度

这个视频我们去创建一个评论控制器。打开命令行工具 ... 可以使用 artisan 的 controller:make 去创建这个控制器 ... 要创建的控制器可以叫它 ReviewController ...

php artisan controller:make ReviewController

完成以后,可以在 app ... controllers 这个目录下面找到它 ...

打开以后,再找到 Resource 类型的控制器里面用来处理存储内容的请求,使用的方法 ... 就是这个 store ...

因为我们不但要保存评论的内容,还要保存它跟电影内容之间的关系 ... 也就是在保存评论内容的时候,我们还得保存评论所属的电影的 id 号 ...

在提交评论以后,提交的地址里面,会包含电影的 id 号 ... 不过,如果你想在这个方法里面,得到这个电影的 id 号,需要去设置一下路由 ...

打开 app 目录下面的 routes.php ... 添加一条路由 ... Route ... 使用的 resource 方法,去给它指定一个 resource 类型的控制器 ...

在这个方法里,先设置一下这个路由处理的基本的地址 ... 应该是 movies 斜线 一组花括号 ... movie_id ... 接着一个斜线 ... 然后是 reviews ... 再把这个路由使用的控制器作为它的第二个参数传递过来 ... ReviewController ...

Route::resource('movies/{movie_id}/reviews', 'ReviewController');

这样如果说请求里面包含电影的 id ,我们就可以在控制器的方法里面,得到它 ...

store

再回到 ReviewController 控制器 ...

在 store 这个方法里,给它一个参数 .. 叫做 $movie_id ...

然后我们先去创建一个评论模型的实例 ...

$review = new Review;

再去设置一下它的 review_content 这个属性的值 ... 它的值就是用户在评论内容这个文本区域里面输入的东西 ... 可以使用 Input 类的 get 方法得到它的值 ..

$review->review_content = Input::get('review_content');

除了要保存评论内容以外,我们还得保存它跟电影内容之间的关系 ... 可以把它的 movie_id 这个属性的值,设置成请求里面发过来的 movie_id 的值 ...

$review->movie_id = $movie_id;

最后,可以使用 save 方法,保存一下 ...

$review->save();

这是一般的保存评论的方法 ...

附加

还有一种方法 ... 就是可以把评论附加到电影内容上。先注释掉前面这两行代码..

然后,先用 Movie 模型的 find 方法,找到跟这个评论相关的电影 ... 再使用它跟评论之间的关系 ... reviews() ... 然后,再用一个 save 方法 ...

在这个方法里面,把在上面创建的评论模型作为它的一个参数 ...

Movie::find($movie_id)->reviews()->save($review);

重定向

保存以后,我们可以用户带回到评论所属的电影页面上 ...

return Redirect::to('movies/' . $movie_id);

预览

保存 ... 去浏览器里预览一下 ...

在文本区域里面,输入点内容 ...

然后点击 发表评论 ... 成功以后会把用户带回到当前这个电影页面上 ...

在这里,你会看到,刚刚发布的评论内容 ....

0:00
2:25
0:00
0:00
0:00
3:54

在电影页面上发表评论 - 控制器《 Laravel 数据库 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点