侧边栏菜单使用laravel对用户隐藏

时间:2020-02-24 04:50:28

标签: laravel

我是laravel的初学者,我从用户那里获得了隐藏的侧边栏菜单,它可以正常工作,但是当从管理员注销时,我将遇到如何解决的错误,谢谢。请参阅错误https://flareapp.io/share/NPL9bz7w

HTML视图

             <!-- Sidebar Menu -->
             <nav class="mt-2">
             <ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" 
              role="menu" data-accordion="false">
             <!-- Add icons to the links using the .nav-icon class
             with font-awesome or any other icon font library -->   
             <!--Admin sidebar menu -->
             @if(Auth::user()->type  == "admin")
             <li class="nav-item">
            <a href="{{url('admin')}}" class="nav-link">
            <i class="fas fa-comments"></i>
            <p>Users Permission</p>
            </a>
            </li>
            <li class="nav-item">
            <a href="{{url('manage_users')}}" class="nav-link">
            <i class="fas fa-comments"></i>
             <p>Manage Users</p>
            </a>
           </li>
          <li class="nav-item">
          <a href="{{url('register')}}" class="nav-link">
           <i class="fas fa-comments"></i>
           <p> User Register</p>
           </a>
           </li>
           <!-- end Admin sidebar menu -->
           <!--   User sidebar menu -->
           @else
          <li class="nav-item">
          <a href="{{url('viewprofile')}}" class="nav-link">
          <i class="fas fa-user">  </i>
          <p>View Profile</p>
          </a>
          </li>
          <li class="nav-item">
          <a href="{{url('DashBoard')}}" class="nav-link">
           <i class="fas fa-comments"></i>
           <p>Chat Room</p>
           </a>
          </li>

          @endif




    </ul>
  </nav>
  <!-- /.sidebar-menu -->

4 个答案:

答案 0 :(得分:2)

问题是,您正在检查@if(Auth::user()->type == "admin")来检查已登录的管理员。如果管理员已注销,则没有Auth::user()。我认为这是您面临的问题。所以像这样改变条件

 @if(Auth::check() && Auth::user()->type  == "admin")
    // Admin menu bar
 @elseif (Auth::check())
    // User menu bar
 @endif

我认为这将解决问题。

答案 1 :(得分:1)

由于用户已注销,因此 Auth :: user()为空。

因此,当您尝试获取其类型时,它会抛出

试图获取非对象的属性“类型”

您需要检查用户是否已登录,然后检查其类型。

@if(Auth::check() && Auth::user()->type  == "admin")
如果用户登录,

Auth :: check()将返回true

答案 2 :(得分:0)

首先检查如果用户已登录,然后检查用户是否为管理员

const search = document.getElementById('search');
const matchList = document.getElementById('match-list');

// Search gems.json and filter it
const searchGems = async searchText =>  {
    const res = await fetch('../data/gemz.json');
    const gems = await res.json();

// Get Matches to current text input
let matches = gems.filter(gem => {
    const regex = new RegExp(`^${searchText}`, 'gi');
    return gem.Page.match(regex);
});


if(searchText.length === 0) {
    matches = [];
    matchList.innerHTML = '';
}
outputHtml(matches);

};

//Show Results in HTML
const outputHtml = matches => {
    if(matches.length > 0) {
      const html = matches.map(match => `
      <div class="card card-body mb-1">
      <h4>${match.Page}</h4> <em>(${match.gemdiscription})</em> <span class="text-primary">
      ${match.gemtags}</span>
      </div>
      `).join('');
matchList.innerHTML = html;
    }       


};

search.addEventListener('input', () => searchGems(search.value));

答案 3 :(得分:0)

使用isset方法

@if(isset(Auth::user()->type) && Auth::user()->type== "admin")

您还可以使用Auth :: check()

@if(Auth::check() && Auth::user()->type== "admin")