【问题标题】:Symfony2 Unable to generate URL although path existSymfony2 无法生成 URL,尽管路径存在
【发布时间】:2015-01-16 11:47:50
【问题描述】:

控制器:

namespace Main\UserBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\SecurityContextInterface;

class LoginController extends Controller
{
    /**
    * @Route("login")
    */
    public function indexAction(Request $request){
        return $this->render('UserBundle:Login:login.html.twig');
    }

    /**
     * @Route("login_check")
     */
    public function loginCheckAction(){
        return true;
    }

    /**
     * @Route("logout")
     */
    public function logoutAction(){

    }
}

观点:

{% extends '::base.html.twig' %}
{% block body %}
<form action="{{ path('/login_check') }}" method="post">
    <label for="username">Email:</label>
    <input type="text" id="email" name="email" value="{{ last_username }}" />

    <label for="password">Password:</label>
    <input type="password" id="password" name="_password" />

    <button type="submit">login</button>
</form>
{% endblock body %}

错误: 在第 3 行的 UserBundle:Login:login.html.twig 中呈现模板期间引发了异常(“无法为命名路由“/login_check”生成 URL,因为此类路由不存在。”)。 /p>

我已经尝试调用 login_check 路径本身并且它正在工作,我也将表单的路径替换为“登录”,它也不起作用。

我也尝试清除缓存和所有内容,但它也不起作用。

有人有解决办法吗?

从航站楼出发的路线:

 main_user_login_index       ANY    ANY    ANY  /login                            
 main_user_login_logincheck  ANY    ANY    ANY  /login_check                      
 main_user_login_logout      ANY    ANY    ANY  /logout                           
 main_user_register_index    ANY    ANY    ANY  /register                         
 main_admin_login_index      ANY    ANY    ANY  /admin/login/{name}               
 main_admin_login_logincheck ANY    ANY    ANY  /admin/login_check                
 main_admin_login_logout     ANY    ANY    ANY  /admin/logout  

【问题讨论】:

  • 控制器中的动作名称是否符合规则,关于您的路由表中的名称?

标签: php symfony


【解决方案1】:

为了使用&lt;form action="{{ path('/login_check') }}" method="post"&gt;

你的路线应该是:

/**
 * @Route("/login_check", name="/login_check")
 */

【讨论】:

  • 你好,结果一样,无法生成URL。
  • 嗨@KarlWong,您是否使用“php app/console route:debug”cmd 来验证您的可用路由?请使用此 cmd 显示您的可用路线及其名称。
  • 谢谢,我给它加了一个名字。我以为路径就是链接。
猜你喜欢
  • 1970-01-01
  • 2014-02-06
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
  • 2012-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多