[英]Why is route not recognized?
我以前没有使用symfony2,但是继承了一些我想添加的代码。
我向UserController
添加了一条新路线:
/**
* @Route("/pushsettings", name="pushsettings", defaults={"_format"="json"})
* @View()
*/
public function pushsettingsAction(Request $request) {
...
}
当我运行./app/console router:debug
,可以看到该路由已被识别。 但是,当我尝试通过浏览器访问路由时,得到了404。
通过查看日志文件,我已经将其跟踪到
cache/prod/appProdUrlMatcher.php
该文件是自动生成的,但由于某种原因,此处未生成我的路由。
手动编辑此文件已解决了该问题-但是为什么此处未自动生成路线? 我错过了什么吗?
如果然后清除缓存,路由将再次返回404页面!
编辑:
routing.yml看起来像这样
gp_api:
resource: "@AppApiBundle/Controller"
prefix: /api
type: annotation
gp_admin:
resource: "@AppAdminBundle/Controller/"
prefix: /admin
type: annotation
resetpsw:
pattern: /reset-password/{key}
defaults: { _controller: AppApiBundle:Default:resetpsw }
login:
pattern: /login
defaults: { _controller: AppApiBundle:Default:resetpsw }
login_check:
pattern: /login_check
logout:
pattern: /logout
user:
pattern: /user
defaults: { _controller: AcmeMainBundle:Security:user }
admin_login:
path: /admin/login
defaults: { _controller: AppAdminBundle:Default:login }
admin_twitter:
path: /admin/twitter
defaults: { _controller: AppAdminBundle:Default:twitter }
admin_twitter_login:
path: /admin/twitter_login
defaults: { _controller: AppAdminBundle:Default:twitterLogin }
admin_check:
pattern: /admin/admin_check
fos_oauth_server_token:
resource: "@FOSOAuthServerBundle/Resources/config/routing/token.xml"
fos_oauth_server_authorize:
resource: "@FOSOAuthServerBundle/Resources/config/routing/authorize.xml"
gp_api_oauth_server_auth_login:
pattern: /oauth/v2/auth_login
defaults: { _controller: AppApiBundle:Security:login }
gp_api_oauth_server_auth_login_check:
pattern: /oauth/v2/auth_login_check
defaults: { _controller: AppApiBundle:Security:loginCheck }
在router:debug中,我可以看到路由:
pushsettings ANY ANY ANY /api/user/pushsettings
但这不在缓存文件中生成
你不应该修改这个(自动生成 - 这是)由专人文件。 只要清除/删除您的缓存,它就可以工作。
在这里找到解决方案:
解决方案是将app.php中的行更改(第二个参数从“ false”更改为“ true”):
$kernel = new AppKernel('prod', true);
我不明白为什么,但至少现在可以了!
编辑:
这暂时解决了该问题,但后来我发现该问题是另一个端点中的错误。 在控制台中检查路由时,仅解析注释,因此它们会显示出来。 但是,在构建缓存时,错误将阻止引擎继续运行。 开启调试似乎可以使高速缓存在发生错误的情况下也能被写入。
我现在已经修复了错误,关闭了调试,一切正常! :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.