Laravel为资源丰富的路线添加过滤器

时间:2014-12-20 15:48:59

标签: php laravel laravel-4 filter routes

我正在使用Laravel 4.2 我有一条像这样的资源路线:

Route::resource('customers', 'CustomersController');

如何添加过滤器,让我们说' auth '过滤到所有相应的路由以及如何仅定位其中一些路径,假设我只想过滤对命名路径的访问权限 customers.create ”。

1 个答案:

答案 0 :(得分:1)

您可以在Controller的构造函数中定义过滤器:

public function __construct()
{
    $this->beforeFilter('auth', ['only' => ['update', 'store']]);
}

如果您有许多资源,可以使用路线组:

Route::group(['before'=>'auth'], function () {
    Route::resource('customers', 'CustomersController');
    // ... another resource ...
});

...并在每个Controller的构造函数中指定beforeFilter。

  • 在routes.php中使用简单的 if 语句:

    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 { ... }