0

ベーステンプレートに埋め込みコントローラーがあります。検索バーです。検索バーコントローラーには、「myProject/search」というルートがあります。

このルートは、コントローラーを埋め込んでいるテンプレート(base.html.twig)が呼び出す場合にのみ使用され、ブラウザーに手動で「myproject/search」を入力した場合には使用されません。

それを行う方法についてのアイデア。

4

2 に答える 2

1

私は、いつかあなたがそれをすることができないので、私は思う:

http://symfony.com/doc/current/book/templating.html#embedding-controllers

ドキュメントからの引用:

このコントローラーは内部でのみ使用されますが、コントローラーを指すルートを作成する必要があります

(...)

Symfony 2.0.20 / 2.1.5以降、Twigレンダータグはコントローラーの論理パスではなく絶対URLを使用するようになりました。これにより、公式ブログで報告されている重要なセキュリティ問題(CVE-2012-6431)が修正されます。アプリケーションが古いバージョンのSymfonyを使用している場合、または以前のレンダリングタグ構文を引き続き使用している場合は、できるだけ早くアップグレードする必要があります。

とにかく、テンプレートから呼び出すときに検索アクションに「秘密の」引数を渡すことで、自分でそれを試すことができると思います。次に、アクションで引数が渡されたかどうかを確認し、渡されなかった場合は404をスローします。

目標を達成するもう1つの方法は、.htaccessファイルを使用することです。

于 2013-01-31T08:37:19.590 に答える
-1

構成_methodのオプションによって、ルートを特定の方法に制限できます。routing

your_rote:
    pattern: /myProject/search
    defaults: { _controller: YourBundle:YourController:YourAction }
    requirements:
        _method: POST
于 2013-01-30T14:10:47.493 に答える