ベーステンプレートに埋め込みコントローラーがあります。検索バーです。検索バーコントローラーには、「myProject/search」というルートがあります。
このルートは、コントローラーを埋め込んでいるテンプレート(base.html.twig)が呼び出す場合にのみ使用され、ブラウザーに手動で「myproject/search」を入力した場合には使用されません。
それを行う方法についてのアイデア。
私は、いつかあなたがそれをすることができないので、私は思う:
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ファイルを使用することです。
構成_method
のオプションによって、ルートを特定の方法に制限できます。routing
your_rote:
pattern: /myProject/search
defaults: { _controller: YourBundle:YourController:YourAction }
requirements:
_method: POST