我安装了Symfony演示示例并查看了它的代码 . 但是我找不到它的路由是如何工作的 . 在源代码上找不到路由定义 . 我安装了Symfony 4.1版本 .
我知道symfony路由如何工作,但在symfony演示示例中,我找不到添加,删除,编辑和显示内容的路由 . 我不知道它是如何定义的 . 我搜索整个源代码并找不到它们 . 当我查看routes.yaml时,我刚刚看到了以下代码:主页:路径:/ 控制器:Symfony \ Bundle \ FrameworkBundle \ Controller \ TemplateController :: templateAction要求:_locale:'%app_locales%'默认值:模板: default / homepage.html.twig _locale:'%locale%'
但是当我在缓存中搜索项目时,我看到了波纹管代码并且不理解它是如何创建的 .
'admin_index' => array(array('_locale'), array('_controller' => 'App\\Controller\\Admin\\BlogController::index', '_locale' => 'en'), array('_locale' => 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN'), array(array('text', '/admin/post/'), array('variable', '/', 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN', '_locale')), array(), array()),
'admin_post_index' => array(array('_locale'), array('_controller' => 'App\\Controller\\Admin\\BlogController::index', '_locale' => 'en'), array('_locale' => 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN'), array(array('text', '/admin/post/'), array('variable', '/', 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN', '_locale')), array(), array()),
'admin_post_new' => array(array('_locale'), array('_controller' => 'App\\Controller\\Admin\\BlogController::new', '_locale' => 'en'), array('_locale' => 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN'), array(array('text', '/admin/post/new'), array('variable', '/', 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN', '_locale')), array(), array()),
'admin_post_show' => array(array('_locale', 'id'), array('_controller' => 'App\\Controller\\Admin\\BlogController::show', '_locale' => 'en'), array('id' => '\\d+', '_locale' => 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN'), array(array('variable', '/', '\\d+', 'id'), array('text', '/admin/post'), array('variable', '/', 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN', '_locale')), array(), array()),
'admin_post_edit' => array(array('_locale', 'id'), array('_controller' => 'App\\Controller\\Admin\\BlogController::edit', '_locale' => 'en'), array('id' => '\\d+', '_locale' => 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN'), array(array('text', '/edit'), array('variable', '/', '\\d+', 'id'), array('text', '/admin/post'), array('variable', '/', 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN', '_locale')), array(), array()),
'admin_post_delete' => array(array('_locale', 'id'), array('_controller' => 'App\\Controller\\Admin\\BlogController::delete', '_locale' => 'en'), array('_locale' => 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN'), array(array('text', '/delete'), array('variable', '/', '[^/]++', 'id'), array('text', '/admin/post'), array('variable', '/', 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN', '_locale')), array(), array()),
'blog_index' => array(array('_locale'), array('page' => '1', '_format' => 'html', '_controller' => 'App\\Controller\\BlogController::index2', '_locale' => 'en'), array('_locale' => 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN'), array(array('text', '/blog/'), array('variable', '/', 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN', '_locale')), array(), array()),
'blog_rss' => array(array('_locale'), array('page' => '1', '_format' => 'xml', '_controller' => 'App\\Controller\\BlogController::index2', '_locale' => 'en'), array('_locale' => 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN'), array(array('text', '/blog/rss.xml'), array('variable', '/', 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN', '_locale')), array(), array()),
'blog_index_paginated' => array(array('_locale', 'page'), array('_format' => 'html', '_controller' => 'App\\Controller\\BlogController::index2', '_locale' => 'en'), array('page' => '[1-9]\\d*', '_locale' => 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN'), array(array('variable', '/', '[1-9]\\d*', 'page'), array('text', '/blog/page'), array('variable', '/', 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN', '_locale')), array(), array()),
'blog_post' => array(array('_locale', 'slug'), array('_controller' => 'App\\Controller\\BlogController::postShow', '_locale' => 'en'), array('_locale' => 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN'), array(array('variable', '/', '[^/]++', 'slug'), array('text', '/blog/posts'), array('variable', '/', 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN', '_locale')), array(), array()),
'comment_new' => array(array('_locale', 'postSlug'), array('_controller' => 'App\\Controller\\BlogController::commentNew', '_locale' => 'en'), array('_locale' => 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN'), array(array('text', '/new'), array('variable', '/', '[^/]++', 'postSlug'), array('text', '/blog/comment'), array('variable', '/', 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN', '_locale')), array(), array()),
'blog_search' => array(array('_locale'), array('_controller' => 'App\\Controller\\BlogController::search', '_locale' => 'en'), array('_locale' => 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN'), array(array('text', '/blog/search'), array('variable', '/', 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN', '_locale')), array(), array()),
'security_login' => array(array('_locale'), array('_controller' => 'App\\Controller\\SecurityController::login', '_locale' => 'en'), array('_locale' => 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN'), array(array('text', '/login'), array('variable', '/', 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN', '_locale')), array(), array()),
'security_logout' => array(array('_locale'), array('_controller' => 'App\\Controller\\SecurityController::logout', '_locale' => 'en'), array('_locale' => 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN'), array(array('text', '/logout'), array('variable', '/', 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN', '_locale')), array(), array()),
'_twig_error_test' => array(array('code', '_format'), array('_controller' => 'twig.controller.preview_error::previewErrorPageAction', '_format' => 'html'), array('code' => '\\d+'), array(array('variable', '.', '[^/]++', '_format'), array('variable', '/', '\\d+', 'code'), array('text', '/_error')), array(), array()),
'_wdt' => array(array('token'), array('_controller' => 'web_profiler.controller.profiler::toolbarAction'), array(), array(array('variable', '/', '[^/]++', 'token'), array('text', '/_wdt')), array(), array()),
'_profiler_home' => array(array(), array('_controller' => 'web_profiler.controller.profiler::homeAction'), array(), array(array('text', '/_profiler/')), array(), array()),
'_profiler_search' => array(array(), array('_controller' => 'web_profiler.controller.profiler::searchAction'), array(), array(array('text', '/_profiler/search')), array(), array()),
'_profiler_search_bar' => array(array(), array('_controller' => 'web_profiler.controller.profiler::searchBarAction'), array(), array(array('text', '/_profiler/search_bar')), array(), array()),
'_profiler_phpinfo' => array(array(), array('_controller' => 'web_profiler.controller.profiler::phpinfoAction'), array(), array(array('text', '/_profiler/phpinfo')), array(), array()),
'_profiler_search_results' => array(array('token'), array('_controller' => 'web_profiler.controller.profiler::searchResultsAction'), array(), array(array('text', '/search/results'), array('variable', '/', '[^/]++', 'token'), array('text', '/_profiler')), array(), array()),
'_profiler_open_file' => array(array(), array('_controller' => 'web_profiler.controller.profiler::openAction'), array(), array(array('text', '/_profiler/open')), array(), array()),
'_profiler' => array(array('token'), array('_controller' => 'web_profiler.controller.profiler::panelAction'), array(), array(array('variable', '/', '[^/]++', 'token'), array('text', '/_profiler')), array(), array()),
'_profiler_router' => array(array('token'), array('_controller' => 'web_profiler.controller.router::panelAction'), array(), array(array('text', '/router'), array('variable', '/', '[^/]++', 'token'), array('text', '/_profiler')), array(), array()),
'_profiler_exception' => array(array('token'), array('_controller' => 'web_profiler.controller.exception::showAction'), array(), array(array('text', '/exception'), array('variable', '/', '[^/]++', 'token'), array('text', '/_profiler')), array(), array()),
'_profiler_exception_css' => array(array('token'), array('_controller' => 'web_profiler.controller.exception::cssAction'), array(), array(array('text', '/exception.css'), array('variable', '/', '[^/]++', 'token'), array('text', '/_profiler')), array(), array()),
'homepage' => array(array('_locale'), array('template' => 'default/homepage.html.twig', '_locale' => 'en', '_controller' => 'Symfony\\Bundle\\FrameworkBundle\\Controller\\TemplateController::templateAction'), array('_locale' => 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN'), array(array('variable', '/', 'en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN', '_locale')), array(), array()),
谢谢
1 回答
在Symfony 4.1中,路由直接在带有注释的控制器中定义:http://symfony.com/doc/current/routing.html
在您的情况下,您可以在每个操作上方找到用于添加,删除,编辑和显示的路由:https://github.com/symfony/demo/blob/master/src/Controller/BlogController.php