2017-08-15 7 views
0

私はnavbarの機能を変更しようとしているので、ユーザーがログインした後、 "register"と "login"のボタンは "logout"という単一のボタンに置​​き換えられます... 私はこの方法で試しましたが、 。ログインまたはログアウト後にnavbarの機能を変更する方法CakePHP 3?

C:\ xamppの\ htdocsに\ jobfinds \ SRC \テンプレート\要素の\ 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> 

私は

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

を使用したログイン方法で表示する$ユーザーを渡そうとしましたmenu.ctpはそれを認識しませんでした... どうすれば実際に動作させることができますか?

+0

は私がの1を押していたときにそれは完璧に動作しますが、テスト –

答えて

0

あなたが必要とするのは、$this->Auth->user()がnullを返さない場合にコントローラをチェックインし、必要な変数を設定するだけです。さらに、要素で使用する場合は、この変数がすべてのアクションで正しく設定されていることを確認する必要があります。したがって、あなたのAppControllerでのアクションはbeforeRender()となるでしょう。

public function beforeRender(Event $event){ 

    /* --- */ 

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

    /* --- */ 

} 

そして、あなたの要素で:ここではそれはのように見えることができる方法である

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

その後、$ _SESSIONにデータを格納しようとすると、ナビゲーションの矢印は、デバッグキットの左下に表示されます:致命的なエラー:キャッチされていないエラー:booleanのメンバー関数user()を呼び出しています...致命的なエラー:キャッチされていないエラー: C:\ xampp \ htdocs \ jobfinds \ src \ Controller \ AppController.php:50スタックトレース:#0 C:\ xampp \ htdocs \ jobfinds \ src \ Controller \ ErrorController.php(54):App \ Controller \ AppController - > beforeRender(Ob (ケーキ\イベント\イベント)) –

+0

さらに、私は新しい仕事を追加することができないという新しい問題に取り組んでいます。入力はURLに渡されますが、保存操作は起こっておらず、成功または失敗のためのフラッシュはありません。 –

+0

あなたの最初のコメントに関する私の回答が更新されました。コントローラーコードをもう一度見てください。 – Szymon

関連する問題