2017-06-27 3 views
2

表示されるページに応じて異なるナビゲーションバーを反映​​する必要があるいくつかの小枝ファイルがあります。私は、いくつかのルートを変更してユーザーIDを含むまで、私のbase.htmlのif文でうまくいきました。たとえば、/ user/id/detailsでなければなりません。ベースhtmlはどんなユーザなのかわからないので、navbarをどのユーザであるか知っている別の小枝に移動しようとしましたが、表示されません。誰もがどんな方向を提案することができますか?私は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) 

ですコントローラー全体がかなり長くて、それ以外はすべて動作します。この関数を呼び出すと、Userエンティティが渡されます。この関数を使用すると、特定のユーザーの詳細を表示できます。

+0

「他のテンプレートはユーザーIDを知っていますか?テンプレートが基底から伸びていれば、すべての変数も基底で認識されます。この 'user 'をどうやって渡していますか? – DarkBee

+0

userエンティティをbase.html.twigに渡す方法がわかりません。それはuseステートメントを使ってもう一方の小枝のコントローラーに渡されます。 – JavaStudent

+0

あなたのテンプレートは基本権から拡張されますか? – DarkBee

答えて

1

私は必要なものを見つけました。私がしなければならなかったのは、ユーザーIDのuriを見て、次のような小枝に渡すことでした:

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