这是我的第一个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
函数返回时是一个有效值,并且它似乎完全按照它应该加载模板,但是该变量没有被公开。
答案 0 :(得分:1)
如果要使用名为“psa”的变量,则必须在控制器中提供此确切名称。这里有twig页面的“page”变量。并且twig的页面变量等于控制器的$ psa。
在您的控制器中,您必须这样做:
array("variableNameForTwig1" => $variableController1, "variableNameForTwig2" => $variableController2 )
然后在您看来,您可以这样做:
{{variableNameFortwig1.attribute}}
{{variableNameFortwig2.attribute}}