2016-09-29 31 views
1

我使用AdminLTE和Lara Entrust創建了一個MyMenu Filter.php文件,根據權限菜單過濾我的選項。Laratrust的菜單過濾權限

adminlte.php

'menu' => [ 
    'MAIN NAVIGATION', 
    [ 
     'text' => 'Blog', 
     'url' => 'admin/blog', 
     'permission' => 'create-post', 
    ], 
    // CODE... 
], 

'filters' => [ 
    // CODE... 
    App\MyMenuFilter::class, 
], 

MyMenuFilter.php

<?php 

namespace App; 

use JeroenNoten\LaravelAdminLte\Menu\Builder; 
use JeroenNoten\LaravelAdminLte\Menu\Filters\FilterInterface; 

class MyMenuFilter implements FilterInterface 
{ 
    public function transform($item, Builder $builder) 
    { 
     if (isset($item['permission']) && \Laratrust::can($item['permission'])) { 
      return false; 
     } 

     return $item; 
    } 
} 

我在 「博客」 菜單選項需要創造,崗位權限。但是mymenufilter.php中的「if」會返回false quando o使用權限,並且不會創建菜單。

但是,如果我把用戶沒有的權限,它會出現。

回答

0

我認爲你剛剛得到邏輯倒退。如果用戶不能使用權限,則應該返回false。我已經添加了! (不)在下面的if語句中。這應該解決您的問題

public function transform($item, Builder $builder) 
{ 
    if (isset($item['permission']) && !\Laratrust::can($item['permission'])) { 
     return false; 
    } 

    return $item; 
}