0

私はSymfony2から始めようとしていますが、Symfony2の「本」のパート「Symfony2でのページの作成」の直後に問題が発生しました。

これは私がしました:

バンドルを作成しました

php app/console init:bundle "Acme\StudyBundle" src

* app/autoload.phpに名前空間を追加しました*

$loader->registerNamespaces(array(
    'Acme'                         => __DIR__.'/../src',
));

バンドルを初期化しました

// app/AppKernel.php
public function registerBundles()
{
    $bundles = array(
        // ...
        new Acme\StudyBundle\AcmeStudyBundle(),
    );

    // ...

    return $bundles;
}

app/config.routing.ymlおよびsrc/Acme / StudyBundle / Resources / config/routing.ymlにルートを作成しました

# app/config/routing.yml
homepage:
    pattern:  /
    defaults: { _controller: FrameworkBundle:Default:index }

hello:
    resource: "@AcmeStudyBundle/Resources/config/routing.yml"


# src/Acme/StudyBundle/Resources/config/routing.yml
hello:
    pattern:  /hello/{name}
    defaults: { _controller: AcmeStudyBundle:Hello:index }

コントローラを作成しました

// src/Acme/StudyBundle/Controller/HelloController.php

namespace Acme\StudyBundle\Controller;
use Symfony\Component\HttpFoundation\Response;

class HelloController
{
    public function indexAction($name)
    {
        return new Response('<html><body>Hello '.$name.'!</body></html>');
    }
}

ページをロードすると:http://localhost/app_dev.php/hello/Ryan Symfonyから例外が発生します:

コントローラ「AcmeStudyBundle:Hello」が見つかりません-クラス「Acme \ StudyBundle \ Controller\HelloController」は存在しません。

コードを何度か乗り越えましたが、何も問題は見つかりませんでした。

4

3 に答える 3

6

追加するだけ

<?php

コントローラーファイルの最初に: src/Acme/StudyBundle/Controller/HelloController.php

それは私に問題を解決しました。

于 2011-04-16T02:56:03.703 に答える
0

Afaik では、Symfony 2.0 の開発者の間で、"Bundles" 拡張機能を保持する場所について議論が行われています。

Git 経由で Symfony の最新バージョンを取得し、コードを 1:1 で追跡しました。

エラーメッセージも色々出ましたが、変更したら...

  1. src/Acme/StudyBundle/Resources/config/routing.yml 内

    デフォルト: { _controller: AcmeStudyBundle:Hello:index } からデフォルト: { _controller: AcmeStudy:Hello:index }

  2. アプリ/設定/ルーティング.xml

    リソース: "@AcmeStudyBundle/Resources/config/routing.yml" からリソース: "@AcmeStudy/Resources/config/routing.yml"

...ブラウザにきれいな「Hello Ryan」が表示されました。

お役に立てれば!

于 2011-04-15T00:21:49.413 に答える
0

おそらく PR9 を実行しています。PR11 (最新) に更新すると、これは解決されると思います。symfony の開発者は PR9 で「バンドル」サフィックスを削除しましたが、その後すぐに再び追加しました

また、Symfony の開発者は、非常に役立つ更新ログを保持しています。

于 2011-04-15T04:33:20.127 に答える