【问题标题】:Twig Blocks not working树枝块不起作用
【发布时间】:2017-06-27 21:07:25
【问题描述】:

我有几个 twig 文件应该反映不同的导航栏,具体取决于显示的页面。在我更改一些路由以包含用户 ID 之前,它在我的 base.html 中的 if 语句工作正常。例如,它应该是 /user/id/details。基本 html 不知道用户是什么,所以我尝试将导航栏移动到另一个知道用户是什么的树枝中,但它没有显示。任何人都可以提供任何方向吗?我对 Symfony 很陌生。谢谢!

这里是代码... Base.html

    {% block heading %}
        <div class="main-heading" id="main-heading">
            <div class="main-logo">
                <img src="{{ asset('images/Dashboard-Logo.png') }}">
            </div>
        {% if '/admin/' in app.request.uri %}
            <nav class="navbar navbar-default">
                <!-- /navbar-header -->
                <div class="collapse navbar-collapse">
                    <ul class="nav navbar-nav">
                        <li><a href="#">Manage Users <span class="sr-only">(current)</span></a></li>
                        <li><a href="{{ path('manage_groups') }}">Manage Groups</a></li>
                        <li><a href="{{ path('export_test_data') }}">Export</a></li>
                    </ul>
                </div><!-- /.navbar-collapse -->
            </nav>
        {% elseif app.request.get('_route') == 'homepage' %}
            <nav class="navbar navbar-default">
                <!-- /navbar-header -->
                <div class="collapse navbar-collapse">
                    <ul class="nav navbar-nav">
                        <li><a href="#login">User Login <span class="sr-only">(current)</span></a></li>
                        <li><a href="#about">About</a></li>
                        <li><a href="#team">The Team</a></li>
                    </ul>
                </div><!-- /.navbar-collapse -->
            </nav>
    </div><!-- /main-heading -->
        {% else %}
        <nav class="navbar navbar-default">
            <!-- /navbar-header -->
            <div class="collapse navbar-collapse">
                <ul class="nav navbar-nav">
                    <li><a href="#">Dashboard<span class="sr-only">(current)</span></a></li>
                    <li><a href="#">Resources</a></li>
                    <li><a href="#">Profile</a></li>
                </ul>
            </div><!-- /.navbar-collapse -->
        </nav>
        {% endif %}
{% endblock %}

和其他树枝模板

{% block header %}
<nav class="navbar navbar-default">
    <!-- /navbar-header -->
    <div class="collapse navbar-collapse">
        <ul class="nav navbar-nav">
            <li><a href="{{ path('dashboard', {'id': user.id}) }}">Dashboard <span class="sr-only">(current)</span></a></li>
            <li><a href="{{ path('resources', {'id': user.id}) }}">Resources</a></li>
            <li><a href="{{ path('user_profile', {'id': user.id})}}">Profile</a></li>
        </ul>
    </div><!-- /.navbar-collapse -->
</nav>`enter code here`
{% endblock %}

这里是控制器

namespace AppBundle\Controller;

use AppBundle\Entity\User;
use AppBundle\Entity\UserGroup;
use AppBundle\Entity\BehaviorData;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\Common\Persistence\ManagerRegistry;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Sonata\AdminBundle\Admin\AbstractAdminExtension;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Show\ShowMapper;
use AppBundle\Form\UserProfileCreateType;
use AppBundle\Form\BehaviorDataType;
use AppBundle\Form\CreateGoalType;
use AppBundle\Form\InvitationType;

/**
* @Route("/user")
*/    /**
      * @Route("/{id}/profile", name="user_profile")
     */
    public function userProfileCreateAction(EntityManagerInterface $em ,Request $request, User $user)

我不会发布整个控制器,因为它很长而且其他一切正常。当我调用这个函数时,我传递了用户实体,它允许它在树枝中显示特定的用户详细信息。

【问题讨论】:

  • 你是什么意思“另一个模板知道用户ID”?如果您的模板从基础扩展,那么基础中的所有变量也将是已知的。你怎么通过这个user
  • 我不知道如何将用户实体传递到 base.html.twig 中。使用 use 语句将其传递到另一个树枝的控制器中。
  • 您的模板确实是从基础扩展而来的吗?
  • 当我尝试放置类似这样的内容时,Base 扩展到其他模板
  • 仪表板 (current)
  • 在 base.html 中告诉我它无法重新调整用户 ID。 S
  • @JavaStudent 如果它无法识别,你的控制器有问题。你能用路由配置来展示它吗?
  • 标签: symfony twig


    【解决方案1】:

    我找到了我需要的东西。我所要做的就是在 uri 中查找用户 ID,然后像这样将其传递到树枝中:

    <li><a href="{{ path('resources', { 'id': app.request.get('id') }) }}">Resources</a></li>
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签