22

私は(初心者として)チュートリアルを開始し、すべてがうまくいくまで:

http://symfony.com/doc/current/book/page_creation.html#creating-a-page-route-and-controllerページの作成: ルートとコントローラー

というファイルを作成しました。/var/www/html/[projekt]/src/AppBundle/Controller/LuckyController.php

しかし、http://[Server-IP]:8000/app_dev.php/lucky/numberを開くと、常に 404 が返されます。

No route found for "GET /lucky/number"
404 Not Found - NotFoundHttpException
1 linked Exception: ResourceNotFoundException »

[2/2] NotFoundHttpException: No route found for "GET /lucky/number"   +
[1/2] ResourceNotFoundException:    +

ルーティング.yml

app: 
    resource: "@AppBundle/Controller/" 
    type: annotation

コントローラ

namespace AppBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;

class LuckyController 
{ 

    /**
     * @Route("/lucky/number") 
     */
    public function numberAction() 
    { 
        $number = rand(0, 100);
        return new Response( '<html><body>Lucky number: '.$number.'</body></html>' ); 
    }
}

どこが間違っているのかわかりません...

エラー - キャッチされていない PHP 例外 Symfony\Component\HttpKernel\Exception\NotFoundHttpException: /var/www/html/[Symfony-Folder]/app/cache/dev/classes で "GET /lucky/number" のルートが見つかりません。 php行2061

php app/console debug:route
 [router] Current routes
 Name                     Method Scheme Host Path
 _wdt                     ANY    ANY    ANY  /_wdt/{token}
 _profiler_home           ANY    ANY    ANY  /_profiler/
 _profiler_search         ANY    ANY    ANY  /_profiler/search
 _profiler_search_bar     ANY    ANY    ANY  /_profiler/search_bar
 _profiler_purge          ANY    ANY    ANY  /_profiler/purge
 _profiler_info           ANY    ANY    ANY  /_profiler/info/{about}
 _profiler_phpinfo        ANY    ANY    ANY  /_profiler/phpinfo
 _profiler_search_results ANY    ANY    ANY  /_profiler/{token}/search/results
 _profiler                ANY    ANY    ANY  /_profiler/{token}
 _profiler_router         ANY    ANY    ANY  /_profiler/{token}/router
 _profiler_exception      ANY    ANY    ANY  /_profiler/{token}/exception
 _profiler_exception_css  ANY    ANY    ANY  /_profiler/{token}/exception.css
 _configurator_home       ANY    ANY    ANY  /_configurator/
 _configurator_step       ANY    ANY    ANY  /_configurator/step/{index}
 _configurator_final      ANY    ANY    ANY  /_configurator/final
 _twig_error_test         ANY    ANY    ANY  /_error/{code}.{_format}
 homepage                 ANY    ANY    ANY  /
4

11 に答える 11

22

私はちょうど追加しました

<?php

ファイル「LuckyNumberController」に追加すると動作します....本当に奇妙です。

みんなありがとう

于 2015-08-11T06:04:24.237 に答える
1

実際には Symfony Controller クラスを拡張しません。クラス LuckyController extends Controllerである必要があります

// src/AppBundle/Controller/LuckyController.php 
namespace AppBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Symfony\Component\HttpFoundation\Response;

class LuckyController extends Controller {

     /** 
      * @Route("/lucky/number") 
      */ 
     public function numberAction() { 
         $number = rand(0, 100); 
         return new Response('<html><body>Lucky number: '.$number.'</body></html>');
     }

}

編集:結局のところ、この質問の問題はコントローラーの拡張にはないため、私の答えは無視してください。

于 2015-08-10T12:30:58.730 に答える
0

http://localhost:8080/ SymfonyProject /web/app_dev.php/lucky/number

わたしにはできる。「SymfonyProject」をプロジェクト名フォルダーに変更するか、プロジェクトがサーバーによって直接指定されている場合は削除します。また、適切に機能するポート (localhost:8080) にも注意してください。私の場合は 8080 ですが、あなたの場合は 8000 またはそれ以外の可能性があります。

于 2016-01-11T15:32:19.893 に答える
0

「"GET /luck/number" のルートが見つかりません」というメッセージが表示されるもう 1 つの理由は、@Route注釈の前にタブがあるためです。例とまったく同じようにコードをプログラムしたと思ったら、このエラーが発生していましたが、結果的にはタブでした。

次のコードを参照してください。最初のコードで「ルートが見つかりません...」という例外が発生することに注意してください。

/**
 *  @Route("/lucky/number")
 */

 /**
 * @Route("/lucky/number")
 */
于 2016-02-07T06:39:23.080 に答える
0

同じ問題がありましたが、これまでに示したものとはまったく異なる理由で...

どういうわけか、私のデモはデフォルトのロケールを定義していませんでした。これに対処できる構成はいくつかあるようですが、正確な原因を知るにはまだ Symfony に詳しくありません。それまでの私の解決策は、単に URL でロケールを定義することです。次に例を示します。

/app_dev.php/ en /ラッキー/番号

于 2016-06-11T19:47:28.517 に答える
0

コントローラーをコピーして既存の Symfony プロジェクトに貼り付けると、ルートがすぐに表示されました。したがって、コントローラーに問題はありません。

routing.yml も比較しましたが、同じです。

あとは、フォルダー構造をチェックして、異なる Symfony プロジェクトが混在していないことを確認するだけです。正しいファイルを編集しているのに、別のパスから Web サーバーを起動している可能性があります。

慎重に確認するか、プロジェクトをまったく別のパスに再構築してください。組み込み Web サーバーでテストしているので、プロジェクトを /var/www/html に配置する必要はありません (実際、配置しないほうがよいでしょう)。

于 2015-08-10T16:46:25.470 に答える
0

他の誰かがこの問題に遭遇した場合: 私にとって、問題は2つありました:

  1. 名前空間を割り当てるのを忘れましたnamespace AppBundle\Controller;
  2. テンプレートの use ステートメントを追加しませんでしたuse Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
于 2016-03-04T19:55:32.287 に答える