Symfony2:找不到路由/ demo / contactus

时间:2014-10-02 18:17:56

标签: php symfony

我是symfony的新手,在AcmeDemo之后,我为联系我们创建了一个新页面。目前它正在为url localhost:8000 / contactus工作,但是遵循相同的demo / secured / login实现,它应该是localhost:8000 / demo / contactus,它给出了404。

我不确定我在做什么错。

的routing.yml

_demo_contactus:
 resource: "@AcmeDemoBundle/Controller/ContactusController.php"
 type:  annotation

ContactusController

<?php 

namespace Acme\DemoBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

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


class ContactusController extends Controller
{
/** 
* @Route("/contactus", name="_demo_contactus")
* @Template()
**/
    public function indexAction()
    {
        return array();
    }
}

?>

然后我有了我的观点,我确信这是正确的。请提供详细的答案,以便它也可以帮助我清理我的概念。谢谢!!!

1 个答案:

答案 0 :(得分:0)

如果您查看SecuredController中的AcmeDemoBundle,您会看到类声明在开头有这个注释:

/**
 * @Route("/demo/secured")
 */
class SecuredController extends Controller
{
    // ...

此注释使用/demo/secured作为Controller类中所有后续路由的前缀。因此,您应该使用相同的方式编写自己的Controller:

/** 
 * @Route("/demo")
 */
class ContactusController extends Controller
{
    // ...

See the docs concerning Route Prefixing for more information

或者,您也可以单独离开ContactusController班级并修改路线导入:

_demo_contactus:
    resource: "@AcmeDemoBundle/Controller/ContactusController.php"
    type:  annotation
    prefix: /demo

您还使用了相同的路由名称两次,这意味着Symfony将重新加载路由并覆盖之前_demo_contactus之前的所有内容。请尝试以下方法:

的routing.yml

_demo_contactus:
    resource: "@AcmeDemoBundle/Controller/ContactusController.php"
    type:  annotation

ContactusController

<?php 

namespace Acme\DemoBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

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

/** 
 * @Route("/demo/contactus")
 */
class ContactusController extends Controller
{
    /** 
    * @Route("/", name="_demo_contactus_home")
    * @Template()
    **/
    public function indexAction()
    {
        return array();
    }
}

请务必同时尝试/demo/contactus/demo/contactus/ ..它可能正在查看斜杠