6

新しいSymfony2バンドルを作成し、Acmeバンドルを削除しました。

次に、新しいコントローラー(MainController.php)を作成しました。

<?php
namespace My\BlogBundle\Controller;

class MainController extends Controller
{
    /**
     * @Route("/", name="index")
     * @Template()
     */
    public function indexAction()
    {

        return array();
    }

そして、単純なビュー:( Main/index.html.twig)には。のみが含まれますhello。私のrouting.ymlは空です。プロジェクト全体を実行すると、次のようになります。

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

ここで何が問題で、どのように解決するのですか?

これが私のルーティングデバッグです:

\Symfony>php app/console router:debug
[router] Current routes
Name                     Method Pattern
_wdt                     ANY    /_wdt/{token}
_profiler_search         ANY    /_profiler/search
_profiler_purge          ANY    /_profiler/purge
_profiler_info           ANY    /_profiler/info/{about}
_profiler_import         ANY    /_profiler/import
_profiler_export         ANY    /_profiler/export/{token}.txt
_profiler_phpinfo        ANY    /_profiler/phpinfo
_profiler_search_results ANY    /_profiler/{token}/search/results
_profiler                ANY    /_profiler/{token}
_profiler_redirect       ANY    /_profiler/
_configurator_home       ANY    /_configurator/
_configurator_step       ANY    /_configurator/step/{index}
_configurator_final      ANY    /_configurator/final

また、キャッシュをクリアしても成功しませんでした。

これがroutes.ymlです:

my_blog:
    resource: "@MyBlogBundle/Resources/config/routing.yml"
    prefix:   /

そして、routing.ymlinMyBlogBundle/Resources/config/routing.ymlは空です。

4

5 に答える 5

12

セットアップ方法では、バンドルからファイルをroutes.yml要求しています。routing.yml

アノテーションを使用してバンドル内のルートを管理する場合はroutes.yml、次のように記述する必要があります。

my_blog:
    resource: "@MyBlogBundle/Controller/MainController.php"
    prefix:   /
    type:     annotation

そして、コントローラーには:Routeからのクラスを含める必要があります。FrameworkExtraBundle

<?php
namespace My\BlogBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

class MainController extends Controller
{
    /**
     * @Route("/", name="index")
     * @Template()
     */
    public function indexAction()
    {
        return array();
    }
}

SensioFrameworkExtraBundleこれは、 (http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/index.html#installation )をインストールしていることを前提としています。

ルートアノテーションの詳細:http ://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/routing.html

于 2013-01-20T21:17:35.793 に答える
1

アノテーションのルーティングを次のように宣言することもできます。

blog_index:
    path: /
    defaults: {_controller:BlogBundle:index}

BlogBu​​ndle / config/routing.ymlにあります

そしてルートで、設定します

blog:
    resource: "@BlogBundle/Resources/config/routing.yml"
    prefix:   /

次に、MainControllerで、アノテーションが機能するはずです。

..use Symfony\Component\Routing\Annotation\Route;

       /**
         * @Route("/", name="blogindex")
         */
于 2015-10-01T07:48:50.803 に答える
0

MainControllerクラスに次のアノテーションを追加します。

/**
 * @Route("/")
 */
class MainController extends Controller
{
}
于 2013-01-20T18:12:19.017 に答える
0

問題は、ルーティングをアノテーションではなくymlとして参照していることです。アノテーションを使用する場合は、フロントルートでアプリフォルダに次のように宣言する必要があります。

post:
    resource: "@AcmeBlogBundle/Controller/PostController.php"
    type:     annotation

そして、PostControllerクラスで定義します

use Symfony\Component\Routing\Annotation\Route;

    /**
     * @Route("/")
     */
    class MainController extends Controller
    {
    }

と機能

    /**
     * @Route("/add", name="article_add")
     */
     public function add(){
        ...
     }

ドキュメントで参照を参照してください

于 2015-10-01T08:54:58.027 に答える
0

ルーターの注釈が正しくインストールされているが、ルートが機能していない状況をトラブルシューティングする他の人のために、インストールする必要があるかもしれません

composer require symfony/apache-pack
于 2020-06-27T11:45:34.883 に答える