2017-09-30 8 views
1

私はユーザガード(web)を持っていますが、管理者ガード(guard)を持っています。 I巣ゲストディレクティブはLaravel Blade複数のガードのための@guestディレクティブ

@auth('admin') 
    <li>Dashboard</li> 
    <li>Log out</li> 
@endauth 

@auth('web') 
    <li>Create Post</li> 
    <li>Log out</li> 
@endauth 

@guest('admin') 
    @guest('web') 
     <li>Contact</li> 
     <li>About us</li> 
    @endguest 
@endguest 

それはのように感じている:だから、私はLaravelブレードディレクティブ@auth('web')または@auth('admin')を使用しますが、何とか@guestので、私はこのように使用するように強制しています動作しない/非表示のものを表示しますあまりにも、それを行うより良い方法?

+0

ゲストには2レベルのゲストがありますか?認証されていないユーザーが管理者であるかどうかはどうですか? – kerrin

+0

いいえ私は3つのガードがあることを意味します:web(ユーザー用)、api(私はこれを使用しません)とadmind(admins用)です。私は連絡先を表示し、認証されていないユーザー(ユーザーも管理者もいません)の私たちについて表示します。しかし、(admin)または(web)を使わずに@guestを単独で使用すると、ゲスト、ユーザー、および管理者の皆様に表示されます。 – nick

+0

Laravelのどのバージョンを使用していますか? – kerrin

答えて

0

Laravel 5.4.36を使用してこれをテストしました。

<ul class="nav navbar-nav"> 
    @guest 
     <li>I'm a guest</li> 
    @endauth 
    <li>{{ Html::link(url('/consultants'), 'Consultants') }}</li> 
    <li>{{ Html::link(url('/clients'), 'Clients') }}</li> 
    <li>{{ Html::link(url('/tasks'), 'Tasks') }}</li> 
</ul> 

'私はゲストです。'は、認証されていないユーザーにのみ、期待どおりに表示されます。

@endguestが表示されていて、@endauthではないことがわかりました。それはちょっとタイプミスですか?

更新:これを行うと、どのように動作するのでしょうか?

@auth('admin') 
    <li>Dashboard</li> 
    <li>Log out</li> 
@endauth 

@auth('web') 
    <li>Create Post</li> 
    <li>Log out</li> 
@endauth 

@guest 
    <li>Contact</li> 
    <li>About us</li> 
@endauth 
+0

私はドキュメントから取りました:https://laravel.com/docs/5.5/blade – nick

+0

BTW @guest指令はWebガード専用です – nick

関連する問題