2009-05-29 2 views

답변

35

일부 경우에는 새 작업 실행을 요청하여 작업 실행이 종료됩니다. 예를 들어 POST 요청에서 양식 제출을 처리하는 작업은 일반적으로 데이터베이스를 업데이트 한 후 다른 작업으로 리디렉션합니다. 또 다른 예는 액션 별칭입니다. 인덱스 액션은 종종 목록을 표시하는 방법이며 실제로는 목록 액션으로 전달합니다.

$this->forward('otherModule', 'index'); 

웹 재에 작용 결과 : 만약

$this->redirect('otherModule/index'); 
$this->redirect('http://www.google.com/'); 
작업이 다른 작업에 호출을 전달하는 경우

:

동작 클래스는 다른 작업을 수행하기 위해 두 가지 방법을 제공한다

리디렉션 또는 전달 사이의 선택은 때로는 까다 롭습니다. 최상의 솔루션을 선택하려면 전달은 애플리케이션의 내부이며 사용자에게 투명해야합니다. 사용자에 관한 한 표시된 URL은 요청 된 URL과 동일합니다. 반대로 리디렉션은 사용자의 브라우저에 대한 새로운 요청과 최종 결과 URL 변경과 관련된 메시지입니다.

조치가 제출 된 양식에서 method="post"과 함께 호출되면 항상 리디렉션을 수행해야합니다. 주된 이점은 사용자가 결과 페이지를 새로 고치면 양식이 다시 제출되지 않는다는 것입니다. 또한 뒤로 버튼은 사용자가 POST 요청을 다시 제출할 것인지 묻는 경고가 아니라 양식을 표시하여 예상대로 작동합니다.

+0

특히 마지막 지점에 대해 감사드립니다. –

+0

이것은 [Symfony Docu] (http://www.symfony-project.org/book/1_0/06-Inside-the-Controller-Layer#chapter_06_sub_skipping_to_another_action)의 원본 텍스트이며, 최소한 소스 이름을 지어야합니다! @ e-satis – domi27

+0

왜 @ paming @ domi27입니까? –