Help us understand the problem. What is going on with this article?

AuthComponentでログインしているときとしていないときでビューの出しわけ

More than 3 years have passed since last update.

CakePHPのAuthComponentで、ログイン機能を実装している状態とします。
AuthComponentはlogin()メソッドの他にも使い易い機能があります。
今回はその中でも、user()を使用します。
これは、現在ログインしているユーザーの情報を取得するメソッドです。
user()については、下記の記事が分かりやすいので、さらに知りたい方はご覧になってください。
【CakePHP】Authコンポーネント

ログインユーザーの情報を取得

今回実装したいページの関数内にて、ログインユーザーの情報を取得します。

UsesController.php
public function index() {
    // ...

    // ログインユーザーの情報を取得
  $user = $this->Auth->user();

    // ビューに渡す
    $this->set('user', $user);

  // 中に入っている配列を確認(必要なければ消してください。)
    var_dump($user);

    // ...
}

もし中に入っている値を確認したければ、var_dumpで確認しましょう。

ビューにて出しわけ

今回は、ログイン状態のときはログアウトをログインしていないときはログインを出すようにします。

index.ctp
if (isset($user)) {
    // ログインしているとき
    // ログアウトへのリンクをだす
    echo $this->Html->link('ログアウト', array('controller'=>'users','action'=>'logout'));
} else {
    // ログインしていないとき
    // ログインへのリンクをだす
    echo $this->Html->link('ログイン', array('controller'=>'users','action'=>'login'));
}

ログインしている状態のとき、$userには値が入っており、逆にログインしていないときは入っておりません。
そのため、issetを利用します。
issetは変数が存在しているか調べる関数です。
変数が存在するかどうかの判別(isset)
isset関数とempty関数と「!」の違い
AuthComponentを利用した、ちょっとしたリンクの出しわけでした。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away