Login Symfony2:找不到路径“的控制器”/en/登录“检查”;
我正在Symfony中创建一个登录表单,遵循Symfony书籍的第页中提供的示例 我在security.yml、routing.yml中创建了必要的配置,还实现了ControllerAction和Twig模板 以下是安全和路由文件的外观:- security.ymlLogin Symfony2:找不到路径“的控制器”/en/登录“检查”;,login,symfony,Login,Symfony,我正在Symfony中创建一个登录表单,遵循Symfony书籍的第页中提供的示例 我在security.yml、routing.yml中创建了必要的配置,还实现了ControllerAction和Twig模板 以下是安全和路由文件的外观:- security.yml Firewalls: # defaut login area for standard users main: switch_user: true context:
Firewalls:
# defaut login area for standard users
main:
switch_user: true
context: user
pattern: .*
form_login:
provider: fos_userbundle
login_path: /login
use_forward: false
check_path: /login_check
failure_path: null
logout: true
anonymous: true
login:
pattern: /{_locale}/login
defaults: { _controller: XYZSiteBundle:SiteUser:login }
login_check:
pattern: /{_locale}/login_check
routing.yml
Firewalls:
# defaut login area for standard users
main:
switch_user: true
context: user
pattern: .*
form_login:
provider: fos_userbundle
login_path: /login
use_forward: false
check_path: /login_check
failure_path: null
logout: true
anonymous: true
login:
pattern: /{_locale}/login
defaults: { _controller: XYZSiteBundle:SiteUser:login }
login_check:
pattern: /{_locale}/login_check
如您所见,登录路径
和检查路径
都位于同一防火墙下。
我仍然收到以下错误:-
找不到路径“/en/login\u check”的控制器。可能您忘记在路由配置中添加匹配的路由
我做错了什么?您的
表单登录
部分的检查路径
值将与/en/login\u检查
不匹配
您必须修改它以匹配
/.*/login\u check
您的配置设置几乎正常。您的问题与路由有关。您只需将routing.yaml更改为即可解决此问题
在routing.yaml中
登录:模式:/login默认值:{u控制器:XYZSiteBundle:SiteUser:login} 登录检查: 模式:/login\u check 因为您的\login和\logincheck模式必须与security.yaml模式匹配。您需要删除/{u locale}/login和/{u locale}/login\u检查
希望这对您有所帮助。您的登录检查路径缺少控制器默认值,应该是:
login_check:
pattern: /{_locale}/login_check
defaults: { _controller: XYZSiteBundle:SiteUser:loginCheck }
谢谢Asish,我试过这个,但那时候对我不起作用。我已经完全改变了路线,所以不能使用这个。谢谢Florian。这是一个很有价值的建议。目前我正在使用/auth/login和/auth/login\u检查,它似乎工作正常。不过,我将来会尝试使用。*方法。或者更好的正则表达式:)这就是一个例子。类似于/(en | de | fr)/登录检查