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'));
?>