无法将值传递给twig文件symfony2

时间:2014-10-21 07:49:18

标签: mongodb symfony

您好我在控制器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不存在的错误。

2 个答案:

答案 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)

我建议使用会话,如以下回复中所述:

Accessing session from TWIG template

并且永远不会手动访问会话全局$_SESSION['_sf2_attributes']