2017-09-30 5 views
1

Ich habe die Benutzer-Wache (welcher Name ist web) und ich habe die Admin-Wache (welcher Name ist guard). Also, zum Anzeigen/Verbergen Sachen verwende ich die Laravel Klinge Richtlinien @auth('web') oder @auth('admin') aber irgendwie die @guest nicht funktioniert so bin ich gezwungen, so zu verwenden:Laravel Blade @guest Anweisung für mehrere Wachen

@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 

I Nest der Gast Richtlinien, aber es fühlt sich an wie zu viel, gibt es keinen besseren Weg?

+0

Haben Sie wirklich zwei Gästeebenen? Wie ermitteln Sie, ob ein nicht authentifizierter Benutzer admin ist oder nicht ??? – kerrin

+0

Nein, ich meine, ich habe drei Wächter: Web (für Benutzer), api (ich benutze diesen nicht) und admind (für Admins). Ich möchte den Kontakt und über uns für nicht authentifizierte Benutzer (weder Benutzer noch Administratoren) anzeigen. Aber wenn ich @guest alleine ohne ('admin') oder ('web') verwende, zeigt es für alle: Gäste, Benutzer und Admins. – nick

+0

Welche Version von Laravel benutzt du? – kerrin

Antwort

0

Nur getestet - mit 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> 

Das 'Ich bin ein Gast' wird nur wie erwartet für nicht authentifizierte Benutzer angezeigt.

Ich bemerkte, dass Sie @endguest und nicht @endauth hatten - ist das nur ein Tippfehler hier?

Update: Wenn Sie dies tun, funktioniert es, wie Sie erwarten würden?

@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

Kein Tippfehler ich nahm es aus der Dokumentation: https://laravel.com/docs/5.5/blade – nick

+0

BTW Die @guest-Richtlinie funktioniert aber nur für den Web-Guard – nick