Laravel 4中的控制器“最佳实践”

时间:2014-06-05 21:06:44

标签: php laravel laravel-4

这更像是一种理论或最佳实践"关于Laravel 4的问题,但它可以应用于MVC模式。

假设我有一个允许用户创建"帖子"的网站。所以我们有一个Post控制器来处理新帖子的创建。现在让我们说任何给定帖子的一部分是用户上传的视频。

以下是我的问题:是否应该有一个单独的视频控制器来处理视频的上传。 (我假设有一个视频模型可以将视频的文件名以及它所属的文件保存到视频数据库表中。)或者是否应该在Post控制器中处理上传的视频?

我问这个问题因为我有点困惑。在我看来,MVC方式会说视频是它自己的实体,因此应该有自己的控制器。但另一方面,Post"拥有"视频只是一个帖子的一部分,视频控制器应该处理它吗?

2 个答案:

答案 0 :(得分:2)

没有一种正确的方法可以做到这一点,但我的建议是继续在后期控制器中上传视频。

视频是"它自己的东西"是的,但这并不意味着它需要自己的控制器。它是帖子的另一部分。帖子标题也是如此。帖子文本/内容也是如此。那么帖子的时间戳等等......那些都是他们自己的东西"他们也不需要拥有自己的控制器来管理它们。

话虽这么说,我会有一个视频模型并在视频和帖子之间建立关系。

答案 1 :(得分:0)

这里没有对错,也许只是惯例。如果您的Video是与Post实体不同的实体(模型),那么它应该有自己的控制器。这样可以更轻松地识别并帮助您隔离代码。

但是,这并不意味着它应该有自己的URL端点。做这样的事情真的很好:

Route::get('posts/index', array('use' => 'PostsController@index'));
Route::get('posts/{id}/video', array('use' => 'VideoController@show'));

这告诉最终用户视频属于帖子,并且很好地将逻辑分开以检索模型。