Symfony:让基本路由工作

时间:2016-01-25 16:33:47

标签: symfony routing vagrant

这可能是由于我的愚蠢,但我真的可以在这里使用提示。

到目前为止,我还没有做过很多关于PHP的工作,主要是使用javascript,现在试图掌握Symfony。我正在使用vagrant和伟大的苏格兰威士忌盒,所以我在这个虚拟机上安装了Symfony并创建了一个新的应用程序。我尝试创建一条只返回“Hello world!”的路线,但我无法让它工作。

DefaultController中定义的路由正在运行。我通过控制台命令

创建了一个新的控制器
$ php bin/console generate:controller

并将其称为TestController。就是这样:

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

class TestController extends Controller
{
    /**
     * @Route("/test")
     */
    public function testAction()
    {
        return new Response( "Hello World!" );
    }

}

当导航到[scotch-box address] / my_project / web时,我得到了默认路由,但是[scotch-box address] / my_project / web / test给了我一个404.

也许它与vm的配置有关,但这不是我的专业知识,因此任何正确方向的推动都将受到赞赏。谢谢!

编辑昨天我设法销毁我的虚拟机后,我设置了一个干净的苏格兰威士忌盒并安装了symfony的demo-app,运行得很好。我还设置了一个干净的Symfony项目,只将DefaultController的路由更改为“/ home”:

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;

class DefaultController extends Controller
{
    /**
     * @Route("/home", name="homepage")
     */
    public function indexAction(Request $request)
    {
        // replace this example code with whatever you need
        return $this->render('default/index.html.twig', [
           'base_dir' =>     realpath($this->container->getParameter('kernel.root_dir').'/..'),
        ]);
    }
}

我的routing.yml上写着:

app:
    resource: "@AppBundle/Controller/"
    type:     annotation

据我了解,现在可以通过[scotch-box address] / my_project / web / home访问Symfony的欢迎页面,但事实并非如此。相反,我仍然可以通过[scotch-box address] / my_project / web访问它,而/ home会抛出404页面。

也许我在这里戴着这顶白痴帽子,但我在文件中找不到任何可以说明这一点的内容。

1 个答案:

答案 0 :(得分:1)

我可能错了,但我很确定这是因为您的routing.yml文件不完整。检查routing.yml

中是否包含此内容
app:
    resource: "@AppBundle/Controller/"
    type:   annotation

如果没有,请添加它。这将插入&#34;插入&#34;将AppBundle的注释路由到整个项目的路由中。