2017-08-15 1 views
0

Ich versuche Navbar-Funktionalität zu ändern, also nachdem der Benutzer angemeldet ist, werden die Schaltflächen "Registrieren" und "Anmelden" durch einzelne Schaltfläche "Abmelden" ersetzt ... Ich versuchte auf diese Weise, aber es war nicht erfolgreich .Wie ändert man die Navbar-Funktionalität nach dem Anmelden oder Abmelden CakePHP 3?

C: \ xampp \ htdocs \ jobfinds \ src \ Template \ Element \ menu.ctp

<div class="col_12 column"> 
     <ul class="menu">   
       <li> Home</li> 
      <?php if(isset($user['id'])): ?> 
       <li>Logout</li>    
      <?php else: ?>   
       <li>Login</li> 
       <li> Register</li>   
      <?php endif ; ?> 
     </ul>  
    </div> 

I unter Verwendung

$this->set('user',$user); 

im Login-Methode anzuzeigen $ Benutzer zu übergeben versucht aber das menu.ctp hat es nicht erkannt ... also wie kann ich es wirklich funktionieren lassen?

+0

Versuch in $ _SESSION um Daten zu speichern und dann Test –

Antwort

0

Sie müssen Ihren Controller einchecken, wenn $this->Auth->user() nicht null zurückgibt, und stellen Sie einfach eine beliebige Variable ein. Wenn Sie es in element verwenden möchten, müssen Sie außerdem sicherstellen, dass diese Variable in allen Aktionen korrekt festgelegt ist. Der beste Ort ist also beforeRender() Aktion in Ihrem AppController. Hier ist, wie es aussehen könnte:

public function beforeRender(Event $event){ 

    /* --- */ 

    if (is_object($this->Auth)) { 
     if ($this->Auth->user() !== null) { 
      $this->set("userIsLoggedIn", true); 
     } else { 
      $this->set("userIsLoggedIn", false); 
     } 
    } 

    /* --- */ 

} 

Und in Ihrem Element:

<?php if(isset($userIsLoggedIn) && $userIsLoggedIn): ?> 
    <span>User is logged in</span> 
<?php else: ?> 
    <span>User is NOT logged in</span> 
<?php endif; ?> 
+0

Es funktioniert perfekt, aber wenn ich Druck auf eine der Navigationspfeile auf der linken unteren Ecke des Debugkit zeigt es mir diesen Fehler: Schwerwiegender Fehler: Uncaught Fehler: Aufruf einer Memberfunktion user() auf boolean in ... Schwerwiegender Fehler: Uncaught Fehler: Aufruf einer Memberfunktion user() on Boolescher Wert in C: \ xampp \ htdocs \ jobfinds \ src \ Controller \ AppController.php: 50 Stapelüberwachung: # 0 C: \ xampp \ htdocs \ jobfinds \ src \ Controller \ ErrorController.php (54): App \ Controller \ AppController -> beforeRender (Ob ject (Cake \ Event \ Event)) –

+0

Außerdem habe ich es mit einem neuen Problem zu tun, dass ich keinen neuen Job hinzufügen kann, obwohl alles in Ordnung zu sein scheint. Die Eingaben werden an die URL weitergeleitet, aber die Speicheraktion findet nicht statt und es wird kein Flash für Erfolg oder Fehlschlag angezeigt. –

+0

Ich habe meine Antwort bezüglich Ihres ersten Kommentars aktualisiert - bitte schauen Sie sich noch einmal den Controller-Code an. – Szymon

Verwandte Themen