这可能是由于我的愚蠢,但我真的可以在这里使用提示。
到目前为止,我还没有做过很多关于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页面。
也许我在这里戴着这顶白痴帽子,但我在文件中找不到任何可以说明这一点的内容。
答案 0 :(得分:1)
我可能错了,但我很确定这是因为您的routing.yml
文件不完整。检查routing.yml
:
app:
resource: "@AppBundle/Controller/"
type: annotation
如果没有,请添加它。这将插入&#34;插入&#34;将AppBundle
的注释路由到整个项目的路由中。