我想了解Symfony 5路由是如何工作的。
如果在我的项目中我有2个不同的控制器具有相同的路由名称会发生什么?
例如,在Controller1.php中:
/**
* @Route("/publisher/notification_update/")
*/
在Controller2.php中:
/**
* @Route("/publisher/notification_update/")
*/
然后在一个小树枝的某个地方,我有一个窗体,它像这样调用这个路由:
<form name="notification" id="notification{{message.notification_id}}"
action="/publisher/notification_update/" style="display:none"
method="post">
<input hidden class="hiddenNotificationsForUser" type="text" id="{{message.notification_id}}"
value="{{message.message}}" onclick="this.form.submit();" />
</form>
在这种情况下会发生什么?会出现错误,还是会按字母顺序找到第一个路径?
在symfony 5中,我使用#[Route(['/login', 'admin/login'], name: 'app_user_login')]
为单个控制器动作路由两个url路径
在DigitalOcean的LEMP服务器上使用Symfony 5重现此场景后,我发现没有错误或警告消息。
Symfony选择了Controller1.php中指定的路由:
/**
* @Route("/publisher/notification_update/")
*/
然而,这是一件坏事,因为将我所描述的情况与大型代码库相结合可能会导致非常难以识别的bug。你可能永远无法到达你需要的路由,即使它的内容是正确的。