후 무시 나는 다음과 같은 경로를 가지고 말 :Laravel 4 필터
Route::any('/door1/{options?}', array(
'as' => 'path',
'after' => 'somefilter',
'uses' => '[email protected]'
))
어디에 내 필터는 DB 테이블에 어떤 값을 증가 할 수있는 작업을 한 후. 옵션 매개 변수가 유효한 경우 모든 괜찮 특정보기를 호출, 그렇지 않으면 옵션을 "수정"하고로 리디렉션 컨트롤러에 관해서는
Route::filter('somefilter', function($route, $request, $response, $action)
{
try
{
//...
IncrementDBTable();
//...
}
catch(Exception $e)
{
return Redirect::home();
}
});
, : 필터는 다음과 같을 것
public function path($options='option1,option2')
{
if(!this->isValidOptions($options)) {
$options = this->correctOptions($options);
return Redirect::route('path', array(
'options' => $options
));
}
// everything fine:
return View::make('door');
}
내 문제이며, 옵션이 잘못되는 경우에, 필터 후 두 번도 수행되는 DB 테이블에 증가를 의미, 두 번 호출됩니다 같은 길을 수행한다. 옵션이 잘못 된 경우 필터를 "무시"할 수 있습니까? 물론 가능한 해결책은 필터 함수 내부의 옵션을 검증하는 것입니다. 그러나 코드를 복제하는 것은 좋지 않습니다. (이것은 간단한 예제 일 뿐이지 만, 옵션 옵션의 유효성 검사 기능이 코드를 더 많이 포함한다면 상황이 안 좋을 것입니다. 아마도 db 쿼리의 무리).
흠 컨트롤러 내부에서 카운팅을 할 수 있으므로 제어 할 수 있습니다. – lukasgeiter
그래, 왜 처음부터 필터에서 이러는거야? –
그게 바로 필터가 맞다고 생각하니? 내 필터가 특정 페이지/경로의 페이지 뷰를 증가시키는 것입니다. 내 애플 리케이션의 다른 페이지에 대해 그렇게하고 싶다고 가정 해 봅시다. 그렇다면 각 컨트롤러 메소드가 해당 기능을 구현하는 대신 여러 페이지/경로에 대해 여러 필터를 사용하는 것이 훨씬 더 우아 할 것입니다. 나는 가능한 한 최소한으로 컨트롤러를 코딩하려고하고있다. – Jonas