2017-05-23 6 views
1

私はSymfony 3アプリケーションの開発に忙しいです。symfony:デフォルトのヌルで異なるパラメータを持つ複数のルート

  • 1 2つのパラメータ最初のケースで

  • つのパラメータ1:

    は、私は2つの経路で提供される作用を有することが可能であるかどうかを知る必要があり与えられたエンティティに関連付けられた新しいエンティティを作成することになります。 2番目のケースでは、既存および特定のエンティティを編集することになります。これは、別のエンティティに関連付けられています。

    それは私の例ここでは、はっきりしていない場合は、次の

    /** 
        * @Route("/admin/instances/{group}/reunions/nouveau", requirements={"group": "\d+"}) 
        * @Route("/admin/instances/{group}/reunions/{reunion}/modifier", requirements={"reunion": "\d+"}) 
        * @Method({"GET", "POST"}) 
        * 
        * @param Request $request 
        * @param Group $group 
        * @param Reunion $reunion 
        * 
        * @return Response 
        */ 
    public function newEditAction(Request $request, Group $group, Reunion $reunion = null) 
    { 
        if (!$reunion) { 
         // we know we are busy with a creation 
        } 
    } 
    

    エンティティを含むテーブルが空でない限り、これで、$reunionnullことはありません、が。

    両方のエンティティグループとReunionが互いに関連しているため(下記の関係を参照)、Symfonyは自動的に特定のグループに関連付けられた最初のReunionエンティティを検索するようです。どんな考え?

    Reunion.php

    /** 
    * @var \AppBundle\Entity\Group 
    * 
    * @ORM\ManyToOne(targetEntity="Group", inversedBy="reunions") 
    * @ORM\JoinColumn(name="reunion_group_id", referencedColumnName="group_id") 
    */ 
    private $group; 
    

    はあなたの助けをいただき、ありがとうございます。

  • +2

    なぜですか?これは、過度に複雑な行動を起こすでしょう。特定のタスクの後に3つ目のアクションにリダイレクトする/別のメソッドを呼び出す、2つのアクションを簡単に行うことができます。すべての共通コードは – kero

    +0

    @keroはコードの動作に依存します。 1つのメソッドでエンティティを作成および更新し、そのエンティティを取得する必要があるかどうか、またはそのエンティティを取得する必要があるかどうかを処理します。私はめったに別の方法でこれらの行動を分離する必要はありません。 – tftd

    +1

    ええ、それほど複雑すぎるべきではありません。私はオブジェクトが空であるかどうかをチェックする必要があります。新しいインスタンスをインスタンス化してフォームに渡します。その後、フォームが提出され、有効であれば、それが持続する前にIDを持っているかどうかチェックします。しかし、私はまた、2つの方法を持つことが時には役立つこともあるという事実に同意します。しかし、私の質問に答えるために、私が使っている方法が何であれ、Symfonyがなぜこのようなタイプヒントに反応するのか知っていますか? – mentinet

    答えて

    0

    2つのルートが必要です。 POSTのみの要求を受け付ける作成用のものと、PUTまたはPATCH要求を受け入れる編集用のものです。

    関連する問題