[英]Symfony3 - No route found for “GET/home”
我正在按照本教程在 Symfony 3 項目中設置我的第一頁:使用 Symfony 3 教程進行快樂開發
我在/src/AppBundle/Controller/
創建了一個HomeController
文件。 這個文件的內容是:
<?php
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;
class HomeController {
/**
* @Route("/home")
*/
public function showAction() {
return new Response('Testing!');
}
}
我只是想得到文本:“測試!” 從上面的showAction()
函數來顯示。 但是,我的頁面出現錯誤:找不到“GET /home”的路由
我上面的設置有問題嗎? 對不起,如果這是一個簡單的問題,這是我第一次與 Symfony 合作,我迷路了!
如果你在 localhost 上測試,你可以進入你的項目目錄並使用內置的 web 服務器來測試你的項目:
php bin/console server:start
並阻止它:
php bin/console server:stop
要調試路由,請輸入:
php bin/console debug:router
那應該顯示您的所有路線。 一旦這有效,就是讓你的 Nginx 工作的問題。
您還可以為內置服務器指定不同的 IP 地址。 請參閱文檔: http : //symfony.com/doc/current/setup/built_in_web_server.html#starting-the-web-server
根據您的htaccess
文件,我的猜測是您的htaccess
文件中沒有正確的重寫。 路由的工作方式,從一個非常高的層次來看,是你總是點擊同一個文件,代碼解析 URL 並調用正確的路由。 為了讓它工作,你需要告訴你的服務器如何做。
首先,請參閱配置 Web 服務器以確保您的服務器配置正確。
然后,嘗試將其添加到您的.htaccess
文件中:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
# Explicitly disable rewriting for front controllers
RewriteRule ^app_dev.php - [L]
RewriteRule ^app.php - [L]
RewriteCond %{REQUEST_FILENAME} !-f
# Change below before deploying to production
#RewriteRule ^(.*)$ /app.php [QSA,L]
RewriteRule ^(.*)$ /app_dev.php [QSA,L]
</IfModule>
這應該可以解決您的問題。 如果沒有,請查看此 Gist 。
免責聲明:我沒有直接使用 Symfony 框架,我主要在 Laravel 中工作,它構建在 Symfony 之上。 我玩過 Symfony 組件,但從未在 Symfony 中構建過完整的項目。 您可能需要從我發布的示例中稍微調整 htaccess 配置,但這至少應該讓您指向正確的方向。
您是否在文件 app/config/routing.yml 中啟用了路由? 需要導入路由才能像任何其他路由資源一樣處於活動狀態。
# app/config/routing.yml
# import routes from a controller class
home:
resource: "@AppBundle/Controller/HomeController.php"
type: annotation
您是否嘗試過再次打開和關閉? 看。 IT人群
在某些情況下,新路由尚未添加到緩存中,因此請嘗試刪除位於 project_name/var/cache 的項目緩存並重新啟動您的服務器 php bin/console server:run 這為我修復了它。
祝你好運
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.