CakePHP:ビューにログイン情報を引き継ぐには
公開日:
:
CakePHP
CakePHPを勉強し始めた頃にCakePHPフレームワークの規約で手こずったことのメモ…
ログイン前後で画面の表示を変えたい場合、ビュー側で表示を変えるロジックを追加するのだが、ログインしているかどうかを判定する情報をビュー側に引き渡す方法が分からず、以前苦労した記憶がある。
その時は、確かサイトにログインボタンを表示しておいて、ログイン認証後に同ボタンをログアウトボタンに表示を切り替えたい。というのがあった。
ロジック追加のステップは以下2つ
①共通コントローラー(AppController.php)にてユーザーログイン情報を取得後、グローバル変数に追加
1 2 3 4 5 |
Class AppController extends Controller { Public function beforeFilter() { $this->set('userSession', $this->Auth->user()); } } |
②表示したいビュー側で、グローバル変数を読み込み、ログイン済かどううか判定する。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<ul> <il> <?php if ($userSession==null) { //ログインしてなければ(userSessionがnullならば)Loginのボタン表記 <?php echo $this->Html->link(__('Login'), array('action' => 'login')); } else { //ログアウト時、ボタン表記を変えて「login.ctp」を呼び出し <?php echo $this->Html->link(__('Logout'), array('action' => 'login')); } ?> </il> </ul> |
かなり初歩的なところで躓いていたな~と懐かしんでました。
<div class=”actions”>
<h3><?php echo __(‘Actions’); ?></h3>
<ul>
<li><?php echo $this->Html->link(__(‘New User’), array(‘action’ => ‘add’)); ?></li>
<li><?php echo $this->Html->link(__(‘List Groups’), array(‘controller’ => ‘groups’, ‘action’ => ‘index’)); ?> </li>
<li><?php echo $this->Html->link(__(‘New Group’), array(‘controller’ => ‘groups’, ‘action’ => ‘add’)); ?> </li>
</ul>
</div>