私は(初心者として)チュートリアルを開始し、すべてが正常に動作します:
http://symfony.com/doc/current/book/page_creation.html#creating-a-page-route-and-controller at stepページの作成:ルートとコントローラー
/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: +
routing.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 /の" GET/lucky/number "のルートが見つかりませんでしたwww/html/[Symfony-Folder] /app/cache/dev/classes.php line 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 /
私はちょうど追加しました
<?php
ファイル「LuckyNumberController」に追加すると、動作します。
みんなありがとう
このURLを試してください:
http:// [Server-IP]:8000/app_dev.php/en/lucky/number
Symfony Bookにはバグがあります:彼らはデモアプリサポートi18nを忘れていました。
ルーティングの前に「/ en」パラメーターを追加するだけです。
この質問は閉じられていますが、私の答えがまだこの問題に直面している他の人を助けることを願っています。
キャッシュの問題である場合があります。/project/var/cache/devからdevフォルダーを削除してください。
authentictechが言うように、コマンドを試すこともできます:
php bin/console cache:clear
環境を指定する場合は、-env = prodプロパティを追加する必要があります。
実際には、Symfony Controllerクラスを拡張しません。 class 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>');
}
}
編集:結局のところ、この質問の問題はコントローラーを拡張することではなかったので、私の答えを無視してください。
他の誰かがこの問題に遭遇した場合:私にとって問題は2つありました:
namespace AppBundle\Controller;
を割り当てるのを忘れましたuse Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
のuseステートメントを追加しませんでした「GET/luck/number」のルートが見つからないもう1つの理由は、@Route
注釈の前にタブがあるためです。コードを例とまったく同じようにプログラミングして、エラーですが、タブであることが判明しました。
以下の次のコードを参照してください。最初のコードは「ルートが見つかりません...」という例外を生成します。
/**
* @Route("/lucky/number")
*/
/**
* @Route("/lucky/number")
*/
http:// localhost:8080 /SymfonyProject/web/app_dev.php/lucky/number
わたしにはできる。 「SymfonyProject」をプロジェクト名フォルダーで変更するか、プロジェクトがサーバーによって直接ポイントされている場合は削除します。また、動作するポート(localhost:8080)にも注意してください。私の場合は8080で、あなたの場合は8000かそれ以外の可能性があります。
基本クラスのコントローラーを拡張しても機能しませんでした。この問題を解決するには、web/app.phpで次の変更を行う必要がありました
$kernel = new AppKernel('prod', true);
また、URLに「en」を追加する必要がありました: http://scotchbox.demo/en/lucky/number
既存のSymfonyプロジェクトにコントローラーをコピーして貼り付けたところ、すぐにルートが表示されました。したがって、コントローラーに問題はありません。
Routing.ymlも比較しましたが、同じです。
残っているのは、フォルダー構造を確認し、異なるSymfonyプロジェクトが混在していないことを確認することだけです。正しいファイルを編集しているが、別のパスからWebサーバーを起動している可能性があります。
慎重に確認するか、完全に異なるパスでプロジェクトを再構築してください。組み込みWebサーバーでテストしているので、プロジェクトを/ var/www/htmlに配置する必要はありません(実際には、しない方が良いです)。
同じ問題を抱えていましたが、ここに示したものとはまったく異なる理由で...
どういうわけか、私のデモはデフォルトのロケールを定義していませんでした。これに対処できる多くの設定があるように見えますが、私はまだ正確な原因を知るためにSymfonyに十分に精通していません。それまでの私の解決策は、URLでロケールを単純に定義することです。例えば:
/app_dev.php/-en/lucky/number