繁体   English   中英

共享相同的变量多个模板TWIG / SYMFONY

[英]Share same variable multiple templates TWIG/SYMFONY

我想将一些变量共享到不同的树枝模板中:

这是我的控制器:

public function indexAction()
{
    $em = $this->getDoctrine()->getManager();
    //Get All projects
    $projects = $em->getRepository('WebAwardsBundle:Project')->findAll();

    //Get the Winner of the day
    $winner = $em->getRepository('WebAwardsBundle:Winner')->findBy(
        array('isDay' => '1')
    );
    foreach($winner as $win){
        $idProject = $win->getIdProject();
    }
    $winner = $em->getRepository('WebAwardsBundle:Project')->findById($idProject);

    //Get the author of the project
    $idUser = $winner[0]->getIdAuthor();
    $user = $em->getRepository('WebAwardsBundle:User')->findById($idUser);

    //Get the vote of the project
    $vote = $em->getRepository('WebAwardsBundle:Vote')->findByIdProject($idProject);


    //Get the last project of the Month

    //All Winner of the month
    //Recuperer dans la liste de tous les projets, le projet == meme id, order by date desc limit 1
    return $this->render('project/index.html.twig', array(
        'projects' => $projects,
        'winner'   => $winner,
        'user'     => $user,
        'vote'     => $vote,
    ));
}

base.html.twig中有一个“优胜者”对象:

<footer class="footer">
    <div class="container-fluid">
        <div class="col-xs-12 col-md-4">
            <div class="col-xs-12">- SITE DU MOIS-</div>
            <div class="col-xs-12">{{ winner[0].name }}</div>
            <div class="col-xs-12">- SITE DU MOIS-</div>
        </div>
        <div class="col-xs-12 col-md-4">qsd</div>
        <div class="col-xs-12 col-md-4">dqs</div>
        <div class="row">
            <div class="col-xs-12">
                <p class="text-center">&copy; Copyright 2016 by <a href="{{ path('homepage') }}">WebAwards</a>.</p>
            </div>
        </div>
    </div>
</footer>

这是我需要Winner对象的login.html.twig:

{% block footer %}
    <!-- WINNER IN UNDEFINED :'( -->
    {{ include('base.html.twig', {'winner': winner }) }}
{% endblock %}

大家都知道怎么了吗?

您好像两次定义了$ winner,请看一下:

$winner = $em->getRepository('WebAwardsBundle:Winner')->findBy(
  array('isDay' => '1')
);
...
$winner = $em->getRepository('WebAwardsBundle:Project')->findById($idProject);

这肯定看起来不对!

我解决了以下问题:

  • 在Winner Controller中创建WinnerDay函数:

     public function winnerDayAction(){ $em = $this->getDoctrine()->getManager(); //Get All projects $projects = $em->getRepository('WebAwardsBundle:Project')->findAll(); //Get the Winner of the day $winner = $em->getRepository('WebAwardsBundle:Winner')->findBy( array('isDay' => '1') ); foreach($winner as $win){ $idProject = $win->getIdProject(); } $winner = $em->getRepository('WebAwardsBundle:Project')->findById($idProject); $userId = $winner[0]->getIdAuthor(); $user = $em->getRepository('WebAwardsBundle:User')->findById($userId); return $this->render('footer.html.twig', array( 'winner' => $winner, 'user' => $user ));` 
  • 在父模板(base.html.twig)中调用操作

     `{{ render(controller('WebAwardsBundle:Winner:winnerDay' )) }}` 
  • 最后,我创建了一个footer.html.twig,该变量现在可用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM