之前我没有使用过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 }
在 路由器:调试 我可以看到路线:
pushsettings ANY ANY ANY /api/user/pushsettings
但这不是在缓存文件中生成的
答案 0 :(得分:0)
您不应手动编辑该文件(它是自动生成的)。只需清除/删除缓存即可。
答案 1 :(得分:-1)
在这里找到解决方案:
symfony 2 routes not found in production
解决方案是更改app.php中的行(第二个参数从' false'到' true'):
$kernel = new AppKernel('prod', true);
我不明白为什么,但至少它现在有用了!
<强> 编辑: 强>
这暂时解决了这个问题,但我后来发现问题是不同端点的错误。在控制台中检查路由时,仅解析注释,以便显示它们。但是,在构建缓存时,错误将阻止引擎继续运行。打开调试似乎可以在不发生错误的情况下写入缓存。
我现在修复了错误,关闭了调试,一切正常! :)