LoginSignup
1
1

More than 3 years have passed since last update.

cakephpでユーザー情報ページ作成

Posted at

cakephpでユーザー情報ページを作成する

cakephpのブログチュートリアルで作成したものから発展させて投稿したユーザーの個別のページを作る。
【ユーザー情報】
・ユーザー名
・登録メールアドレス
・ユーザー画像
・一言コメント

Model

User.php
public $validate = array(
        'username' => array(
            'required' => array(
                'rule' => 'notBlank',
                'message' => 'ユーザー名は必要です'
            )
        ),
        'email' => array(
            'email' => array(
                'rule' => 'email',
                'message' => 'メールアドレスを入力してください',
            ),
            'required' => array(
                'rule' => 'notBlank',
                'message' => 'メールアドレスは必要です'
            ),
            'check' => array(
                'rule' => 'isUnique',
                'message' => 'すでに登録されているメールアドレスです'
            )
        ),
        'password' => array(
            'required' => array(
                'rule' => 'notBlank',
                'message' => 'パスワードは必要です'
            )
        ),
        'image_name' => array(
            //拡張子の指定
            'rule1' => array(
                'rule' => array('extension', array('jpg', 'jpeg', 'gif', 'png')),
                'message' => '画像ではありません',
:               'allowEmpty' => true,//空でも可
            ),
            //画像サイズの制限
            'rule2' => array(
                'rule' => array('filesize', '<=', '5000000'),
                'message' => '画像サイズは5MB以下でお願いします',
            ),
        ),

isUniqueは特定カラムの一意性を検証してくれるメソッド(重複チェック)
'allowEmpty' => trueにすることで空欄であっても許可をする(必須ではない)

Controller

UsersController.php
//ログインしているかによって行える作業を分ける
    public function isAuthorized($user) {
//誰でもview(ユーザー情報を見る)だけは可能
        if ($this->action === 'view') {
            return true;
        }
//ログインユーザーであれば編集が可能
        if ($this->Auth->user('id') === $user['id']) {
            if ($this->action === 'edit') {
                return true;
            }
        }
        return parent::isAuthorized($user);
    }

View

view.ctp
<h1>ユーザー名:<?php echo $user['User']['username']; ?></h1>
<h1>メールアドレス:<?php echo h($user['User']['email']); ?></h1>
<h4>ユーザー画像</h4>
<?php
if ($user['User']['image_name']) {//DBにファイル名が保存されているかチェック
    echo $this->Html->image($user['User']['image_name'], array('width'=>'200','height'=>'200'));
} else {
    echo '未登録';
}
?>
<p>【一言コメント】</p>
<p><?php echo h($user['User']['comment']); ?></p>
<?php
if ($auth['id'] === $user['User']['id']) {//ログインユーザーと同じであれば編集が可能
    echo $this->Html->link(
        'ユーザー情報編集',
        array('controller' => 'users', 'action' => 'edit', $user['User']['id']));
}
echo '<br>';
echo $this->Html->link(
    'ホーム', array('controller' => 'posts', 'action' => 'index'));
?>

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1