3158


Symfonyで、コントローラが多数になることが見込まれるのですが、通常はバンドルの`Controller`ディレクトリの直下にすべて配置する前提になっているかと思います。

これを例えば

  * `Controller/Foo/SearchController`
  * `Controller/Foo/EditController`
  * `Controller/Bar/AddController`
  * `Controller/Bar/EditController`

のように分類したいです。

これが可能なのかどうかと、可能な場合、次の設定はどのように記述したらよいでしょうか。

  * `routing.yml` でのコントローラ名
  * コントローラに対応するテンプレートファイルの配置場所
  * テンプレートファイルを `render()` で指定する時の指定方法


CC BY-SA 3.0
2014-12-27T13:10:06.277
2701
2015-01-06T03:07:14.527
5444
question
php symfony2
SymfonyでコントローラをControllerディレクトリのサブディレクトリに配置したい


`Controller/Foo/SearchController` のような配置は可能です。

`Foo/SearchController` がAppBundle内にあると言う前提で、indexアクションの各設定方法をそれぞれ説明します。

  * `routing.yml` でのコントローラ名
[code]     app_foo_search_index:

        path:     # ...
        defaults: { _controller: AppBundle:Foo/Search:index }
    
[/code]

[defaults._controllerはFQCN::methodと言う形式でも良いみたいです。](http://symfony.com/doc/current/book/routing.html#controller-
string-syntax)

※Annotationで一括定義したい場合は次のようにします。

[code]     _app_foo:

        prefix:   # ...
        resource: "@AppBundle/Controller/Foo/"
        type:     annotation
    
[/code]

  * コントローラに対応するテンプレートファイルの配置場所:

`@Template` アノテーションに対応させたい場合は
`BUNDLE_ROOT/Resources/views/Foo/Search/index.html.twig`のようにviews内でもディレクトリをネストさせます。

  * テンプレートファイルを `render()` で指定する時の指定方法 `AppBundle:Foo/Search:index.html.twig` または `@App/Foo/Search/index.html.twig`


CC BY-SA 3.0
2015-01-06T03:00:56.917
3158
2015-01-06T03:07:14.527
2015-01-06T03:07:14.527
242
242
2701
answer