这是我的路线:
Route::group(array('before' => 'auth'), function() {
Route::resource('restaurants', 'RestaurantsController');
});
我希望restaurants.create
可供访客用户使用。
这可能吗?
答案 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() {