귀하의 $this->redirect();
호출은 RedirectResponse
객체 (API reference를) 만들었습니다. 리디렉션은 컨트롤러가 실제로이 객체를 반환하는 경우에만 발생합니다. instanceof
꽤되지 않습니다 :
use Symfony\Component\HttpFoundation\RedirectResponse;
public function someAction ($value)
{
$a = $this->myFunction($value);
if($a instanceof RedirectResponse) return $a;
// You won't come here if something wrong with $value
}
아직도, 당신이 반환 값으로 다른 것을 사용하는 것이 가장 좋은 거라고 생각)
return $this->redirect($this->generateUrl('someRoute'));
그냥 어떤 함수의 반환을 확인합니다. 예를 들어 C 루틴은 일이 잘못되어 -1을 반환합니다. 당신은 NULL 아마도 사용하여 비슷한 일을 할 수있는 :
public function myFunction ($value)
{
if ($value == '')
{
return NULL; // Or something else (as long as it is illogical for your function to return it).
}
return 10;
}
public function someAction ($value)
{
$a = $this->myFunction($value);
if(is_null($a)) return $this->redirect($this->generateUrl('someRoute'));
// You won't come here if something wrong with $value
}
참고 : 당신은 (아마도 음수?) 다른 반환 값을 사용하여 경로를 결정하고, 그것을 다시 경로를 일치하도록 myFunction
를 원하는 경우 컨트롤러 (myFunction
이 -1을 반환하면 route1
으로 이동하고 -2를 반환하면 route2
등이됩니다). 경로 자체를 반환하도록 할 수도 있습니다 (myFunction
이 경로를 반환했는지 확인하려면 is_string($a)
을 확인하십시오).
myFunction에 예외를 던질 수도 있습니다. 나는 당신이 정말로 PHP 헤더 명령을 사용하여 종료하고 싶다면 가정합니다. 권장하지 않습니다. 결론 : 생각을 조금 조정해야합니다. @White는 올바른 접근법을 가지고있다. – Cerad