我正在使用图片库Web应用程序。它有很多访问路线,它们都应该以相同的方式呈现图库,唯一的区别是图片的顺序。
所以例如:
mysite.com/favorites -> shows all the pics ordered by number of favorites
mysite.com/views -> shows all the pics ordered by number of views
mysite.com/date -> shows all the pics ordered by date
mysite.com/votes -> shows all the pics ordered by votes
由于它们之间的所有这些操作非常相似,在控制器上为每个路径定义一个操作并将顺序作为参数传递是一个好习惯吗?或者这个逻辑应该在模型中处理?
答案 0 :(得分:2)
如果操作非常相似且与参数不同,则可以使一个操作接受该参数。最后一次不是一个规则,只是一种偏好。
在您的特定情况下,您可以通过使用带参数的一个路径来处理它:
Route::get('{orderBy}', 'GalleryController@showPics')
然后在您的控制器中,您将获得如下内容:
class GalleryController extends BaseController
{
public function showPics($orderBy)
{
$pics = $this->service->getPics($orderBy);
return View::make('gallery')->with('pics', $pics);
}
}
虽然它可以正常工作,但还有一些要考虑的问题: