一个简单的例子告诉你我的问题是什么: 我有一个手机型号,这属于一个用户,一个用户有很多手机。
在我的routes.php中我有Route::resource('phones', 'PhoneController')
所以我可以通过以下网址localhost / phones / 5访问特定的手机。
这些手机应该只对所有者可见,所以我可以检查PhoneController中的每个方法(显示,存储,编辑,更新),如果当前用户是这款手机的真正拥有者,但我认为有更好的方法比如在Routes.php中直接使用过滤器来过滤掉这些东西,我不需要进行冗余检查。
也许你了解这个问题,可以帮助我以优雅的方式解决这个问题。
答案 0 :(得分:3)
您可以将此_constructor
放入您的控制器:
class PhoneController extends BaseController {
public function __construct()
{
parent::__construct();
$methodsToBeFiltered = array('show', 'store', 'edit', 'update');
$id = Route::parameter('phone');
$this->beforeFilter('filtername:' . $id, array('only' => $methodsToBeFiltered));
}
}
确保您已在filtername
文件中声明了过滤条件(filters.php
)。我已使用phone
作为资源名称,如果它不匹配,则从终端运行php artisan routes
并找到该路由的url
参数名称。