Je suis occupé à développer une application Symfony 3.Symfony: routes multiples avec des paramètres différents avec la valeur par défaut
J'ai besoin de savoir s'il est possible d'avoir une action qui est desservi par 2 voies:
- une avec 1 paramètre
- avec 2 paramètres
Dans le premier cas , ce serait pour créer une nouvelle entité associée à l'entité donnée. Dans le second cas, il s'agirait d'éditer une entité existante et donnée, qui est associée à une autre entité donnée.
Si ce n'est pas clair, voici mon exemple:
/**
* @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
}
}
Bien que, avec cela, le $reunion
est jamais null
à moins que la table qui contient les entités est vide. Comme les deux entités Group et Réunion sont liées les unes aux autres (voir la relation ci-dessous), il semble que Symfony recherche automatiquement la première entité Réunion associée au groupe donné. Une idée pourquoi?
Reunion.php
/**
* @var \AppBundle\Entity\Group
*
* @ORM\ManyToOne(targetEntity="Group", inversedBy="reunions")
* @ORM\JoinColumn(name="reunion_group_id", referencedColumnName="group_id")
*/
private $group;
Merci pour votre aide.
Pourquoi? Cela va créer une action de surcomplexe. Vous pouvez facilement avoir deux actions (chacune avec leur propre itinéraire), qui après leurs tâches spécifiques rediriger vers une troisième action/appeler une autre méthode, où tout le code commun se trouve – kero
@kero dépend de ce que votre code fait .. dans 99% des les fois où je crée et met à jour des entités dans une méthode et gère juste comment ou si elle devrait récupérer l'entité en question. J'ai rarement besoin de séparer ces actions dans des méthodes séparées. – tftd
Oui, ça ne devrait pas être trop complexe. J'ai juste besoin de vérifier si mon objet est vide ou non, oui j'instancie un nouveau et le passe à la forme. Ensuite, lorsque le formulaire est soumis et valide, je vérifie s'il a un identifiant avant de persister. Mais je suis également d'accord avec le fait que deux méthodes peuvent parfois être utiles. Mais pour répondre à ma question, quelle que soit la méthode que j'utilise, savez-vous pourquoi Symfony réagit comme ça avec l'indice de type? – mentinet