这可能是由于我的愚蠢,但我真的可以在这里使用提示。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页面。
也许我在这里戴着白痴的帽子,但是在文档中我找不到任何可以说明问题的东西。
如果你进入'/ web/app_dev.php/test',会发生什么? –
访问被允许:'您不能访问此文件。检查app_dev.php获取更多信息。' – 124c41
这是因为只能从本地主机访问app_dev.php。如果你想在localhost之外开发,你必须编辑这个文件。 – kba