Routing Symfony3-正常路线被解释为带有参数/段塞的路线
我在我的应用程序中定义了以下路线:Routing Symfony3-正常路线被解释为带有参数/段塞的路线,routing,routes,slug,symfony,Routing,Routes,Slug,Symfony,我在我的应用程序中定义了以下路线: -------------------------- ---------- -------- ------ ----------------------------------- Name Method Scheme Host Path -------------------------- ---------- -------- ------ ----------------------------
-------------------------- ---------- -------- ------ -----------------------------------
Name Method Scheme Host Path
-------------------------- ---------- -------- ------ -----------------------------------
_wdt ANY ANY ANY /_wdt/{token}
_profiler_home ANY ANY ANY /_profiler/
_profiler_search ANY ANY ANY /_profiler/search
_profiler_search_bar ANY ANY ANY /_profiler/search_bar
_profiler_info ANY ANY ANY /_profiler/info/{about}
_profiler_phpinfo ANY ANY ANY /_profiler/phpinfo
_profiler_search_results ANY ANY ANY /_profiler/{token}/search/results
_profiler ANY ANY ANY /_profiler/{token}
_profiler_router ANY ANY ANY /_profiler/{token}/router
_profiler_exception ANY ANY ANY /_profiler/{token}/exception
_profiler_exception_css ANY ANY ANY /_profiler/{token}/exception.css
_twig_error_test ANY ANY ANY /_error/{code}.{_format}
api_route ANY ANY ANY /api
sec_events_index GET ANY ANY /sec/events/
sec_events_new GET|POST ANY ANY /sec/events/new
sec_events_show GET ANY ANY /sec/events/{id}
sec_events_edit GET|POST ANY ANY /sec/events/{id}/edit
sec_guest_delete ANY ANY ANY /sec/guest/{id}
sec_events_delete DELETE ANY ANY /sec/events/{id}
pub_event ANY ANY ANY /{id}/{guestid}
home_page ANY ANY ANY /
about_page ANY ANY ANY /about
products_route ANY ANY ANY /products
sec_guests_new GET|POST ANY ANY /sec/guests/new
sec_guests_edit GET|POST ANY ANY /sec/guests/{id}/edit
send_invite ANY ANY ANY /sec/invites
admin_index GET ANY ANY /admin/users
profile_show ANY ANY ANY /sec/profile
admin_edit GET|POST ANY ANY /admin/{id}/edit
sec_delete DELETE ANY ANY /admin/{id}
login_route ANY ANY ANY /login
login_check ANY ANY ANY /login_check
pass_reset ANY ANY ANY /reset
pass_reset_form ANY ANY ANY /{token}
test ANY ANY ANY /test
homepage ANY ANY ANY /
logout ANY ANY ANY /logout
-------------------------- ---------- -------- ------ -----------------------------------
每当我使用
/sec/profile
通过浏览器访问routeprofile\u show
时,探查器会告诉我它试图访问routepub\u事件
,就好像我在浏览器中键入了/{id}/{guestid}
一样我有没有做错什么,让它选择正确的路线以及正确的控制器和方法?您需要在
routing.yml
中的导入路线末尾移动路线发布事件
这是正常的行为,因为/sec/profile
匹配/{id}/{guestid}
。好的做法是在routing.yml
文件末尾加载通用路由
您可以做的另一件事是在pub_event
route中设置id
参数的要求
对于注释,它应该如下所示:
/**
* @Route("/{id}/{guestid}", requirements={"id" = "\d+"}, defaults={"id" = 1})
*/
记住“早期路线总是赢”。请阅读Symfony Routing book中关于需求的更多信息:再强调也不为过。与其像这样将所有路由放在路由文件的末尾(如果使用注释,这可能不起作用),不如对路由设置更严格的要求,以便某些路由可能与其他路由不匹配。我建议将您的
pub_event
路线更改为/event/{id}/{guestid}
,以获得额外保险和SEO清晰性。在这种情况下是个好主意:)。