我在我的应用中定义了以下路线:
-------------------------- ---------- -------- ------ -----------------------------------
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
-------------------------- ---------- -------- ------ -----------------------------------
每当我通过浏览器profile_show
访问路由/sec/profile
时,探查器会告诉我它尝试访问路由pub_event
,就像我在浏览器中键入/{id}/{guestid}
一样。
为了让它找到正确的路线和正确的控制器和方法,我有什么不对的吗?
答案 0 :(得分:2)
您需要在pub_event
的导入路径末尾移动路线routing.yml
。
这是正常行为,/sec/profile
匹配/{id}/{guestid}
。好的做法是在routing.yml
文件末尾加载通用路由。
您可以做的其他事情是在id
路线中设置pub_event
参数的要求。
使用注释看起来应该是这样的:
/**
* @Route("/{id}/{guestid}", requirements={"id" = "\d+"}, defaults={"id" = 1})
*/
记住"早期路线总是胜利"。阅读更多关于Symfony Routing book中的要求:http://symfony.com/doc/current/book/routing.html#adding-requirements