0

这是我的第一个 SymfonyCMF 应用程序,所以请多多包涵,我可能从根本上误解了一些概念。

我有一个 ActionBlock( /cms/content/most-recent-psa),其动作为FooCmsBundle:Psa:embedPsa.

我的嵌入函数如下所示:

class PsaController extends Controller {

    /**
     * @Template()
     */
    public function embedPsaAction() {
        //... figure out which PSA needs to be displayed and set it to $psa

        return array('page' => $psa);
    }
}

我将它嵌入到 Twig 模板中:{{ sonata_block_render({"name": "/cms/content/most-recent-psa"}) }}

当我将该模板嵌入页面时,我得到了这个异常:Variable "psa" does not exist in /var/www/peacefund-cms/src/Foo/CmsBundle/Resources/views/Psa/embedPsa.html.twig at line 6,这只是一个简单的输出:<h2>{{ psa.title | raw }}</h2>

所以看起来它做的一切都是正确的。我已经确保 $psa 从函数返回时是一个有效值embedPsaAction,并且它似乎完全按照应有的方式加载模板,但变量没有被公开。

4

1 回答 1

1

如果你想使用一个名为“psa”的变量,你必须在控制器中给出这个确切的名字。在这里,您有树枝页面的“页面”变量。twig 的 page 变量等于控制器的 $psa。

在您的控制器中,您必须这样做:

array("variableNameForTwig1" => $variableController1, "variableNameForTwig2" => $variableController2 )

然后在您看来,您可以这样做:

{{variableNameFortwig1.attribute}}
{{variableNameFortwig2.attribute}}
于 2014-06-13T11:50:59.570 回答