actionblock模板中的未定义变量

时间:2014-06-13 11:04:49

标签: php symfony symfony-cmf

这是我的第一个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函数返回时是一个有效值,并且它似乎完全按照它应该加载模板,但是该变量没有被公开。

1 个答案:

答案 0 :(得分:1)

如果要使用名为“psa”的变量,则必须在控制器中提供此确切名称。这里有twig页面的“page”变量。并且twig的页面变量等于控制器的$ psa。

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

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

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

{{variableNameFortwig1.attribute}}
{{variableNameFortwig2.attribute}}