簡體   English   中英

Symfony3 - 找不到“GET/home”的路由

[英]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 合作,我迷路了!

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 這為我修復了它。

祝你好運

可能的原因是您的項目沒有啟用注釋:請參閱此處的文檔。

運行它來獲取它:

 composer require annotations

它應該可以解決問題。 (也許在那之后做一個緩存:清除)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM