2016-01-25 52 views
0

这可能是由于我的愚蠢,但我真的可以在这里使用提示。Symfony:让基本路由工作

到目前为止,我还没有用PHP做很多工作,主要是使用javascript,现在试图掌握Symfony。我正在与vagrant和伟大的scotch-box合作,所以我在这个虚拟机上安装了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!"); 
    } 

} 

当导航到[苏格兰盒地址]/MY_PROJECT /网络我得到的默认路由,但[苏格兰盒地址]/MY_PROJECT /网络/测试给了我404

也许它与虚拟机的配置有关,但这不是我的专业知识,所以任何在正确的方向微调将不胜感激。谢谢!

编辑:昨天我设法销毁了我的vm后,我设置了一个干净的scotch-box并安装了symfony的demo-app,它运行得很好。我也有设置一个干净的Symfony项目,只更改了DefaultController的路线“/家”:

<?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 

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

也许我在这里戴着白痴的帽子,但是在文档中我找不到任何可以说明问题的东西。

+0

如果你进入'/ web/app_dev.php/test',会发生什么? –

+0

访问被允许:'您不能访问此文件。检查app_dev.php获取更多信息。' – 124c41

+1

这是因为只能从本地主机访问app_dev.php。如果你想在localhost之外开发,你必须编辑这个文件。 – kba

回答

1

我可能是错的,但我敢肯定,这是因为您的routing.yml文件不完整。检查您是否在routing.yml

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

如果不是,请添加它。这会将您的AppBundle的注释路由“插入”到整个项目的路由中。

+0

感谢您的帮助,但那里都是正确的。 – 124c41