-1

Symfony アプリケーションに次のルート構成があります。

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 }

アクションにリンクされていexecuteConfigureます。executeCreate次に、このように構成されたフォームがあります。

<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>

フォームが送信されるたびにexecuteConfigure実行されますが、私が知る限り、POSTメソッドで構成されたルートはそれを避けて実行する必要がありexecuteCreateます。

同じ URL を保持するこれら 2 つのアクションを区別するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

7

私もこの問題を抱えていて、古いフォーラム メッセージ (http://oldforum.symfony-project.org/index.php/t/25750/) で答えを見つけました。

request メソッドを完全に無視している場合は、通常の sfRoute を使用している可能性があります。ルーティングを「メソッド対応」にするために sfRequestRoute を使用する必要があります。したがって、あなたの例では次のようにします。

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 }
于 2011-11-07T15:09:19.630 に答える
0

このルーティングスキームを使用して解決しました:

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

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

次に、Url を呼び出すときに、GET の場合は user または user/ のいずれかを呼び出すことができますが、POST の場合は users/ のみを呼び出すことができます。理由は言えませんが、うまくいきます

于 2014-10-17T06:16:52.973 に答える