我正在使用Laravel 4.2我有这样的资源路线:
Route::resource('customers', 'CustomersController');
如何添加过滤器,假设">auth"过滤器到所有相应的路由以及如何仅定位其中的一部分,假设我只想过滤对命名路由">customers.create"的访问。
您可以在控制器的构造函数中定义过滤器:
public function __construct()
{
$this->beforeFilter('auth', ['only' => ['update', 'store']]);
}
如果您有许多资源,则可以使用路由组:
Route::group(['before'=>'auth'], function () {
Route::resource('customers', 'CustomersController');
// ... another resource ...
});
。并在每个控制器的构造函数中指定 beforeFilter。
或:
在路由中使用简单的 if 语句.php:
if (Auth::check()) { Route::resource('customers', 'CustomersController'); } else { Route::resource('customers', 'CustomersController', ['except' => ['update', 'store']]); }
为使用相同筛选器的资源创建基本控制器并对其进行扩展:
class AuthorizedController extends BaseController { // ... constructor with beforeFilter definition ... } class CustomersController extends AuthorizedController { ... }