2017-05-23 13 views
1

Symfony 3 앱을 개발하는 중입니다.Symfony : 다른 매개 변수가있는 여러 경로 (기본 null 포함)

  • 한이 개 매개 변수를 첫 번째 경우에

  • 하나의 매개 변수 1 :

    나는이 두 경로로 제공됩니다 작업을 할 수 있는지 알고 필요 , 그것은 주어진 엔티티와 관련된 새로운 엔티티를 생성하는 것입니다. 두 번째 경우에는 다른 지정된 엔터티에 연결된 기존 및 지정된 엔터티를 편집하는 것입니다.

    그건 내 예를 들어 여기에, 명확하지 않으면 :

    /** 
        * @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 결코 있지만.

    엔티티 그룹과 리 유니언 모두 서로 관련되어 있으므로 (아래 관계 참조) Symfony는 지정된 그룹과 관련된 첫 번째 재결합 엔티티를 자동으로 검색합니다. 왜 그런가? Reunion.php

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

    는 당신의 도움을 주셔서 감사합니다.

  • +2

    왜? 이것은 과잉 행동을 일으킬 것입니다. 특정 작업을 수행 한 후 세 번째 작업으로 리디렉션하거나 다른 모든 메서드를 호출하는 두 가지 작업 (각각 공통 경로가 – kero

    +0

    인 @kero는 코드에서 수행하는 작업에 따라 달라질 수 있음)의 99 %에서 두 가지 작업을 쉽게 수행 할 수 있습니다. 하나의 메소드에서 엔티티를 생성하고 업데이트하고, 어떻게 엔티티를 검색할지 또는 문제의 엔티티를 가져와야 하는지를 처리합니다. 나는 거의 별도의 방법으로 이러한 행동을 분리 할 필요가 없다. – tftd

    +1

    그래, 너무 복잡해서는 안된다. 난 그냥 내 개체가 비어 있는지 여부를 확인해야합니다, 그렇습니다 나는 새로운 것을 인스턴스화하고 양식에 전달합니다. 그런 다음 폼이 제출되고 유효하면 지속되기 전에 ID가 있는지 확인합니다. 그러나 두 가지 방법을 사용하는 것이 때로는 유용 할 수도 있다는 사실에 동의합니다. 그러나 제 질문에 대답하기 위해, 제가 사용하는 방법이 무엇이든, Symfony가 왜 이런 식으로 반응 하는지를 아십니까? – mentinet

    답변

    0

    두 가지 경로가 있어야합니다. 하나는 POST 전용 요청을 허용하는 생성을위한 것이고 다른 하나는 PUT 또는 PATCH 요청을 허용하는 편집을위한 것입니다.