這可能是由於我的愚蠢,但我真的可以在這裏使用提示。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