拉拉维尔 向资源丰富的路由添加过滤器


Laravel Add a filter to resourceful route

我正在使用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 { ... }