web-dev-qa-db-ja.com

Symfony2 / TwigでテンプレートからURLを正しく生成する方法

私はSymfony2で作業しています。

Routing.ymlにこれがあります

_welcome:
    resource: "@AcmeBundle/Controller/"
    type:     annotation

コントローラー内でこのメソッド:

/**
 * @Route("/{page}")
 */
public function staticAction($page)
{
    return $this->render('AcmeBundle:Static:'.$page.'.html.twig');
}

共通ページを生成するには:

/home
/contact 
/privacy

しかし、メニューにURLを作成すると:

<a href="{{ path('_welcome', {'page': 'home'}) }}">Home</a>
<a href="{{ path('_welcome', {'page': 'contact'}) }}">Contact</a>
<a href="{{ path('_welcome', {'page': 'privacy'}) }}">Privacy</a>

そして、SymfonyはこれらのURLを生成します:

…./?page=home
…./?page=contact
…./?page=privacy

そして、権利は次のようになります。

/home
/contact
/privacy

どうすればいいですか?

25
rpayanm

次のように、コントローラーのルートアノテーションにルート名を追加する必要があります。

/**
 * @Route("/{page}", name="static")
 */
public function staticAction($page)
{
    // ... 
}

次に、その名前を使用してtwig pathヘルパーを呼び出すことができます。

<a href="{{ path('static', {'page': 'home'}) }}">Home</a>
48
Ahmed Siouani