【问题标题】:How can I easily pass all the variables from a template to a partial in Symfony with output escaping on?如何轻松地将模板中的所有变量传递给 Symfony 中的部分变量,同时输出转义?
【发布时间】:2010-06-07 05:45:23
【问题描述】:

当我有输出转义时,是否有一种简单的方法可以将模板文件可以访问的所有变量传递到部分?

我倾向于创建一个模板文件,然后在某个时候将内容重构为部分,似乎有一种简单的方法可以将所有相同的变量从模板传递到部分并完成它。

我有输出转义,我不能只传入 $sf_data

看起来从另一个部分调用一个部分非常简单...只需传入变量 $vars。

编辑: 这是关于 Symfony 1.2+

【问题讨论】:

    标签: templates symfony1 partial parameter-passing


    【解决方案1】:

    使用的是哪个版本的 Symfony?

    提示 symfony 1.1 中的新功能:代替 产生一个模板,一个动作可以 返回部分或组件。这 renderPartial() 和 renderComponent() 动作类的方法促进 代码的可重用性。此外,他们 利用缓存 分音的能力(见章节 12)。中定义的变量 动作将自动传递给 部分/组件,除非你 定义一个关联数组 变量作为第二个参数 方法。

    所以如果你只是不传递 include_partial() 的第二个参数,我想你已经完成了......

    编辑:完全错误。让我们看看在 renderPartial() 中做了什么:调用 getPartial(),它会这样做:

    $vars = null !== $vars ? $vars : $this->varHolder->getAll();
    

    所以现在,您可以在操作中创建一个包含所有变量的变量:

      public function executeStackOverflow()
      {
        $this->testVar = 42;
        $this->allVars = $this->varHolder->getAll();
      }
    

    现在你可以调用你的partials并给他们$allVars作为第二个参数。授予所有变量的访问权限。

    【讨论】:

    • 但是你可以在一个动作中渲染一个变量的一部分,然后在模板文件中显示那个变量吗?
    • 我猜是这样,但为什么要这样做呢?
    • 我有一个执行模板的操作,并且该模板有几个部分。如果你使用 renderPartial() 它只渲染部分而不是模板。
    • 好吧,看来我混淆了很多东西,我以为我给你的提示可以直接在视图中使用,但是......不。但是你仍然可以在 renderPartial() 中的那段代码。我要编辑我的答案。
    • 酷,我只需要调用 $sf_data->getRaw('allVars') 因为我有输出转义。
    猜你喜欢
    • 2011-05-18
    • 2017-12-26
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 2017-11-10
    • 2015-11-06
    相关资源
    最近更新 更多