Symfony2路由:如何请求仅从一个模板获取路由

时间:2013-01-30 14:06:23

标签: php symfony twig routes

我在我的基本模板中有一个嵌入式控制器。这是一个搜索栏。 对于搜索栏控制器,我有一个路线“myProject / search”。

我想要的是,只有当我嵌入控制器的模板(base.html.twig)会调用它时才会使用此路由,而不是当我手动插入浏览器时:“myproject / search”

关于如何做到这一点的任何想法。

2 个答案:

答案 0 :(得分: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。

实现目标的另一种方法是使用.htaccess文件。

答案 1 :(得分:-1)

您可以在_method配置中通过routing选项将路线限制为某种方法:

your_rote:
    pattern: /myProject/search
    defaults: { _controller: YourBundle:YourController:YourAction }
    requirements:
        _method: POST