Laravel仅为访客用户提供资源

时间:2014-07-01 15:29:24

标签: php laravel laravel-4

这是我的路线:

Route::group(array('before' => 'auth'), function() {

    Route::resource('restaurants', 'RestaurantsController');

});

我希望restaurants.create可供访客用户使用。

这可能吗?

2 个答案:

答案 0 :(得分:1)

只需在Route Group之外声明路线:

Route::resource('restaurants', 'RestaurantsController');

而不是:

Route::group(array('before' => 'auth'), function() {
    Route::resource('restaurants', 'RestaurantsController');
});

然后在RestaurantsController控制器中,在before方法中添加__construct过滤器,如下所示:

public function __construct()
{
    parent::__construct(); // If BaseController has a __construct method
    $this->beforeFilter('auth', array('except' => array('create')));
}

因此,所有方法都将auth作为before过滤器,但没有create方法。如果您需要添加另一个before过滤器,那么您可以在第一个之后添加另一个过滤器,如下所示:

public function __construct()
{
    parent::__construct(); // If BaseController has a __construct method

    // Add auth as before filter for all methods but not for create
    $this->beforeFilter('auth', array('except' => array('create')));

    // Only for create method
    $this->beforeFilter('anotherFilter', array('only' => array('create')));
}

答案 1 :(得分:1)

我相信您正在寻找guest过滤器,默认情况下应该包含该过滤器。

所以改变以下行:

Route::group(array('before' => 'auth'), function() {

为:

Route::group(array('before' => 'guest'), function() {