2

1 つの定義で同じコントローラーの複数のルートを定義することは可能ですか?

例えば:

単一の定義を持ちたい

/, /about, /privacy-policy

のようなものを使用して

_home:    
    pattern:   {/ , /about, /privacy-policy}  
    defaults:  { _controller: AcmeDemoBundle:Home:index, about, privacy_policy }

ここで提案されているように、個別の定義で複数のルートを定義したくありません。

編集:これは私のソースコードです:

<?php

namespace Acme\DemoBundle\Controller;

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

class HomeController extends Controller
{
    /**
     * @Route("/")
     */
    public function indexAction()
    {
        /*
         * The action's view can be rendered using render() method
         * or @Template annotation as demonstrated in DemoController.
         *
         */
        return $this->render('AcmeDemoBundle:Home:home.html.tpl');
    }
    /**
     * @Route("/about")
     */
    public function aboutAction()
    {
        return $this->render('AcmeDemoBundle:Home:about.html.tpl');
    }    
}

これはrouting.ymlのソースコードです

_home:
    pattern:  /
    defaults: { _controller: AcmeDemoBundle:Home:index }
_welcome:
    pattern:  /
    defaults: { _controller: AcmeDemoBundle:Welcome:index }
_demo_secured:
    resource: "@AcmeDemoBundle/Controller/SecuredController.php"
    type:     annotation

_demo:
    resource: "@AcmeDemoBundle/Controller/DemoController.php"
    type:     annotation
    prefix:   /demo
4

2 に答える 2

4

ルート アノテーションに名前を宣言しない場合、symfony はそれを生成します。(「@Route アノテーションで定義されたルートには、バンドル名、コントローラー名、およびアクション名で構成されるデフォルト名が与えられます。」http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/routingから.html )

複数のルートを宣言することにより、symfony は 1 つの名前を生成します (名前を正確に指定しない場合)、おそらく最初のルートを保持することで、他のルートをオーバーライドします。

注釈内のすべてのルートにランダムな名前を付けてテストすることができます。

最後に、ドキュメントのこの例のようにバンドルにリンクを追加して、ルート ルーティング ファイルを忘れないようにしてください。

blog:
    resource: "@SensioBlogBundle/Controller"
    type:     annotation 
于 2013-07-24T14:40:26.643 に答える