используя боковую панель в разных лезвиях - PullRequest
0 голосов
/ 29 октября 2018

Я новичок в Laravel и на самом деле мне нужно написать боковую панель в каждом блейде приложения, чтобы она работала, но я бы хотел использовать другую боковую панель в зависимости от раздела сайта, где я нахожусь. Вот что я пытаюсь сделать:

РЕДАКТИРОВАТЬ 1

Макеты / main.blade.php

<div class="wrapper">
   <div class="sidebar" data-color="brown" data-active-color="danger">
      <div class="logo">
         <!-- Content -->
      </div>
      <!-- Sidebar -->
      @if(request()->is("{{ url('/')}}/{operator}"))
         @include('operator.sidebar')
      @else
         @include('stduser.sidebar')
      @endif
      <!-- End sidebar -->
   </div>

   <div class="main-panel">
      <!-- Navbar -->
      <nav></nav>
      <!-- End navbar -->

      <!-- Main content section -->
      @yield('main-panel')
      <!-- End main content section -->

      <!-- Footer -->
      <footer></footer>
      <!-- End footer -->
   </div>
</div>

stduser / dashboard.blade.php

@extends('layouts.main')

@section('main-panel')
   <!-- Main panel contents -->
@endsection

@section('extrajs')
   <!-- script contents -->
@endsection

stduser / sidebar.blade.php

<div class="sidebar-wrapper">
  <div class="user btn-rotate">
     <div class="photo">
        <i class="fa fa-user-circle-o fa-2x" aria-hidden="true" style="color:#fff"></i>
     </div>
     <div class="info">
        <a href="{{ url('/user') }}/profile">
           <span>
              {{ Auth::user()->name }}
           </span>
        </a>
        <div class="clearfix"></div>
     </div>
  </div>

  <ul class="nav">
     <li class="active btn-rotate">
        <a href="{{ url('/') }}">
           <i class="nc-icon nc-bank"></i>
           <p>Companies</p>
        </a>
     </li>
  </ul>
</div>

оператор / sidebar.blade.php

<div class="sidebar-wrapper">
  <div class="user btn-rotate">
     <div class="photo">
        <i class="fa fa-user-circle-o fa-2x" aria-hidden="true" style="color:#fff"></i>
     </div>
     <div class="info">
        <a href="{{ url('/user') }}/profile">
           <span>
              {{ Auth::user()->name }}
           </span>
        </a>
        <div class="clearfix"></div>
     </div>
  </div>

  <ul class="nav">
     <li class="active btn-rotate">
        <a href="{{ url('/') }}/{{ $operator->id }}/about">
           <i class="fa fa-tachometer" aria-hidden="true"></i>
           <p>DashBoard</p>
        </a>
     </li>
     <li class="btn-rotate">
        <a href="{{ url('/')}}/{{ $operator->id}}/suppliers">
           <i class="fa fa-link" aria-hidden="true"></i>
           <p>Suppliers</p>
        </a>
     </li>
     <li class="btn-rotate">
        <a href="{{ url('/')}}/{{ $operator->id}}/products">
           <i class="fa fa-product-hunt" aria-hidden="true"></i>
           <p>Products</p>
        </a>
     </li>
  </ul>
</div>

Вот как структурируются мои взгляды:

enter image description here

Есть ли способ заставить его работать?

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Исходя из вашего отзыва на ответ addi2113, кажется, что вы хотите отключить включение боковой панели в зависимости от того, на какой странице вы находитесь. Есть несколько способов сделать это. Самый простой (но наименее гибкий) способ сделать это - показать определенную боковую панель в зависимости от маршрута. Например, если у вас есть предсказуемая структура маршрута для всех «операторских» страниц, таких как example.com/operator/*, вы можете сделать следующее, используя оператор @if в своем блейд-представлении. Как это:

@if(request()->is("/unique/url/pattern"))
    @include('operator.sidebar')
@else
    @include('stduser.sidebar')
@endif

Очевидно, вы можете отредактировать это, чтобы использовать любую логику, которую вы хотите, но это несколько простой способ справиться с этим.

РЕДАКТИРОВАТЬ: попробуйте это в вашем main.blade вместо того, чтобы использовать раздел и получить:

<div class="wrapper">
  <div class="sidebar" data-color="brown" data-active-color="danger">
      <div class="logo">
         <!-- Content -->
      </div>
      <!-- Sidebar -->
      <div class="sidebar-wrapper">
        <div class="user btn-rotate">
           <div class="photo">
              <i class="fa fa-user-circle-o fa-2x" aria-hidden="true" style="color:#fff"></i>
           </div>
           <div class="info">
              <a href="{{ url('/') }}/profile">
                 <span>
                    {{ Auth::user()->name }}
                 </span>
              </a>
              <div class="clearfix"></div>
           </div>
        </div>
        @if(request()->is('/unique/url/pattern'))
             @include('operator.sidebar')
        @else
             @include('stduser.sidebar')
        @endif
     </div>
  </div>
</div>

РЕДАКТИРОВАТЬ 2:

Поскольку кажется, что вы используете динамический URL для страниц оператора, у вас есть два варианта. Первый вариант - сделать маршруты вашего оператора более уникальными, чем они есть в настоящее время, чтобы вы могли использовать звездочку для обозначения всех маршрутов текущего шаблона. Например, в route / web.php измените маршруты для страниц оператора на этот тип шаблона:

Route::get('/operator/{operator}/about','OperatorController@about')->name('operator-about');

Добавив слаг оператора в URL, теперь у вас есть УНИКАЛЬНЫЙ путь, на который вы можете ссылаться. Затем в своем главном блейде вы будете ссылаться на все маршруты операторов вместе, как показано ниже:

@if(request()->is('/operator/*'))
     @include('operator.sidebar')

Сделав URL уникальным, вы сделали очень простой способ ссылаться на все маршруты, где вы хотите отобразить боковую панель оператора.

Другой вариант, который, на мой взгляд, не так надежен, - ссылаться на конкретные маршруты по именам. Например, используя маршрут, который я определил выше с именем «operator-about», я мог бы показать боковую панель оператора следующим образом:

@if(Route::currentRouteName()=="operator-about")
     @include('operator.sidebar')

Затем вы расширили бы это, явно указав все именованные маршруты, для которых вы хотите показать боковую панель оператора. Как вы, вероятно, можете сказать, это станет грязным, если вы захотите включить много маршрутов. Я не рекомендую делать это таким образом, но вы можете решить проблему, как хотите.

0 голосов
/ 29 октября 2018

вы можете включить blade-файл, например @include ('layouts / sidebar_'. $ SidebarName), и если вы хотите избежать ошибок, когда include не существует, вы можете использовать @includeIf ('view.name', ['some') => 'data'])

Таким образом, у вас есть только оператор включения и содержимое боковой панели только один раз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...