2011-10-24 3 views
0

와 심포니의 경로를 구성 나는 심포니 응용 프로그램에서 다음과 같은 경로 구성이 있습니다같은 URL하지만 다른 HTTP 방법과 컨트롤러 액션

label: 
    url:   /label 
    param:  { module: label, action: configure } 
    requirements: { sf_method: get } 

label_create: 
    url:   /label 
    param:  { module: label, action: create } 
    requirements: { sf_method: post } 

executeConfigureexecuteCreate 행동에 연결합니다. 그럼 난 형태가 이런 식으로 구성되어 : 지금까지 내가 POST 방법으로 구성 경로를 알고있는 것을 방지하고 executeCreate을 실행해야하지만 형태가 executeConfigure 제출 될 때마다

<form action="<?php echo url_for('@label_create') ?>" method="POST"> 
    <?php echo $form->renderHiddenFields() ?> 
    <input type="hidden" name="sf_method" value="post" /> 
    <!-- more stuff here --> 
</form> 

가 실행됩니다.

동일한 URL을 유지하는 두 작업을 어떻게 구별 할 수 있습니까?

감사합니다.

답변

6

이 문제도 있었고 이전 포럼 메시지 (http://oldforum.symfony-project.org/index.php/t/25750/)에서 대답을 발견했습니다.

요청 방법을 완전히 무시하는 경우 일반 sfRoute를 사용하는 것이 가장 가능성이 높습니다. sfRequestRoute를 사용하여 라우팅을 '메소드 인식'으로 만들어야합니다. 따라서, 귀하의 예제에서 당신이 할 것입니다 : 당신이 전화 사용자 또는 사용자 중 수있는 URL을 호출 할 때 GET 만 사용자/다음

users_create: 
    pattern: /
    defaults: { _controller: "RentalAPIBundle:User:create" } 
    requirements: { _method: post } 

users:  
    pattern: / 
    defaults: { _controller: "RentalAPIBundle:User:index" }  
    requirements: { _method: get } 

:

label: 
    url:   /label 
    class:  sfRequestRoute 
    param:  { module: label, action: configure } 
    requirements: { sf_method: get } 

label_create: 
    url:   /label 
    class:  sfRequestRoute 
    param:  { module: label, action: create } 
    requirements: { sf_method: post } 
+1

이 답변은 이전 버전의 Symfony에서는 유용하지만 현재 릴리스에서는 더 이상 사용되지 않습니다. 어떤 대안이 있습니까? –

0

을 나는이 라우팅 sheme를 사용하여 해결/POST. 이유는 말할 수는 없지만 작동합니다.