2016-01-25 53 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