您好我在控制器Symfony2中有以下功能
class OrganisationTaskController extends Controller
{
public function setContainer(\Symfony\Component\DependencyInjection \ContainerInterface $container = null)
{
parent::setContainer($container);
$this->containerInitialized();
}
/**
* Perform some operations after controller initialized and container set.
*/
public function containerInitialized()
{
$dbName = $_SESSION['_sf2_attributes']['dbName'];
$orgDM = $this->get('work_core.common_functions')->getDocumentManager('org', $dbName);
$coreDM = $this->get('work_core.common_functions')->getDocumentManager('core', '');
$organisationLogoDetails = $orgDM->getRepository(
'Work\OrganisationBundle \Document\OrganisationConfig'
)->findOneBy(
array(
'isActive' => true
)
);
if ($organisationLogoDetails->getlogoFileId() != "") {
$orgLogo = $organisationLogoDetails->getlogoFileId();
} else {
$orgLogo = "";
}
//Get Organisation Name from Global Organisation
$globalOrgName = $coreDM->getRepository('Work\CoreBundle\Document\Organisation')->findOneBy(
array('shortName' => $_SESSION['_sf2_attributes']['shortName'])
);
$orgName = $globalOrgName->getName();
$commonVariablesArrays = array(
'orgLogo' => $orgLogo,
'orgName' => $orgName
);
}
}
我想在layout.html.twig.Without渲染中传递$ commonVariablesArrays变量。
这个函数在控制器的任何函数之前调用,我在编写一些常用代码,我需要在layout.html.twig文件中使用它,这是我的应用程序的常见布局。 所以我的问题是我无法设置$ arrays变量来传递这个" layout.html.twig"。我正在每个页面上扩展这个布局,如: {%extends' WorkCoreBundle :: layout.html.twig' %}
所以任何人都可以帮助我如何在布局文件中访问这个$数组变量。给你充分。如果我要传递这个变量,如: 返回$ this->渲染(' WorkOrganisationBundle:布局:layout.html.twig',数组(' aray' => $ commonVariablesArrays ));
这也抛出了变量aray不存在的错误。
答案 0 :(得分:2)
如果containerInitialized是Controller中的__construct类型, 然后你需要在那里设置$ this-> commonVariablesArrays然后你可以将这个公共数组检索到控制器:: Actions()
无论如何,我会采取不同的路线并在其他地方进行这种常见的分配,例如在服务中。然后你可以在你需要它的控制器中注入服务,或者使用http://jmsyst.com/bundles/JMSDiExtraBundle将它作为属性注入所有控制器:: Actions()(尽管只是一个推荐,你可以使用标准的Symfony实现这一点任何额外的捆绑)
实现所需内容的另一种方法是使用事件处理程序。看看这里: http://symfony.com/doc/current/components/http_kernel/introduction.html
我不理解在没有渲染的情况下将值传递给模板的概念。正是在渲染时,在模板中分配了key->值。
答案 1 :(得分:0)