컨트롤러에서 필터 등록하기
Submitted by river -
등록 9 years ago - 수정 9 years ago
class MyController extends \Controller
{
public function __construct()
{
$this->beforeFilter('auth');
}
}
class MyController extends \Controller
{
public function __construct()
{
$this->beforeFilter('auth', ['except' => 'login']);
$this->beforeFilter('csrf', ['on' => 'post']);
}
}
class MyController extends \Controller
{
public function __construct()
{
$this->beforeFilter(function()
{
if (date('G') < 6)
{
return "This website doesn't work before 6am";
}
}
}
}
class MyController extends \Controller
{
public function __construct()
{
# the @ makes it look for this function inside the controller instance.
$this->beforeFilter('@foofunc', ['only' => ['edit', 'delete', 'update']]);
}
public function foofunc(\Illuminate\Routing\Route $route, \Illuminate\Http\Request $request = null, $value = null)
{
dd([$route->parameters(), $request->all(), get_class($value)]);
}
}
reource route
에서 필터 등록
resource route
설정에서 다음의 형태로 brefore filter로 등록가능할 것 같지만, 불가능하다. resouce
메써드가 이를 지원하지 않는다. 참고3
Route::resource('my', 'MyController', ['before' => 'auth']);
이의 해결 방법은 route group
을 사용하는 것이다.
Route::group(['before' => 'auth'], function()
{
Route::resource('my', 'MyController');
});
하지만 이렇게 정의한 경우에는 컨트롤러에서 forgetBeforeFilter
가 동작하지 않는다. 아직 이 상황에 대한 원인 및 해결책은 모르곘다.
class MyController extends \Controller
{
public function __construct()
{
if (date('G') < 6)
{
# 다음 구문이 실행되도 auth 필터는 동작한다.
$this->forgetBeforeFilter('auth');
}
}
}
참고
Stats
-
0 likes
- 2532 views