我是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();
}
}
?>
然后我有了我的观点,我确信这是正确的。请提供详细的答案,以便它也可以帮助我清理我的概念。谢谢!!!
答案 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
之前的所有内容。请尝试以下方法:
_demo_contactus:
resource: "@AcmeDemoBundle/Controller/ContactusController.php"
type: annotation
<?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/
..它可能正在查看斜杠