[Site] マイページ機能 その2

タグ :

作成サイト「koweboo」についてまとめるシリーズです。
今回はマイページ機能についてです。
前記事(データ取得)に続きまして、今回は「編集」についてです。

作成サイト内の関連箇所 — 「マイページ

編集フォームの作成

マイページの内容を変更する際の編集ページを作成します。
編集フォームはコントローラ(UsersController.php)の「edit()」を変更して使います。

<div class="users form">
	<h2><?php echo __('MyPage Edit'); ?></h2>
	<?php
		echo $this->Form->create('Post');
		// ユーザー名
		echo $this->Form->input('name', array(
			'label'=>__('Name', true),
			'value'=>$user_name
		));
		// 自己紹介
		echo $this->Form->input('text', array(
			'label'=>__('Introduction', true),
			'type'=>'textarea',
			'value'=>$user_text
		));
		// 活動地域
		echo $this->Form->input('area', array(
			'label'=>__('Area', true),
			'value'=>$user_area
		));
		// 生年月日
		echo $this->Form->input('birthday', array(
			'label'=>__('Birthday', true),
			'default' => date(
				'Y-m-d H:i',
				strtotime($user_birth)
			),
			'type'=>'date',
			'dateFormat'=>'YMD',
			'minYear'=>'1900',
			'maxYear' => date('Y'),
			'monthNames' => ''
		));
		// 仕事
		echo $this->Form->input('work', array(
			'label'=>__('Work', true),
			'value'=>$user_work
		));
		// 性別
		echo $this->Form->input('sex', array(
			'label'=>__('Sex', true),
			'type'=>'select',
			'selected'=>$user_sex
		));
		echo $this->Form->end(__('Registers', true), array(
			'div'=>false
		));
	?>
</div>

input タグのオプション設定として、22行目〜33行目の生年月日にはセレクトタグの最大値、最小値などを付加します。<br /また、それぞれの input には初期値として登録値を持たせるようにします。
その登録値の受け渡し処理をコントローラ(UsersController.php)の「edit()」へ記述します。

// ログインユーザー情報
$user = $this->Auth->user();
$id = $user['id'];
// データをモデルから取得
$data = $this->User->find('first', array(
	'conditions' => array('User.id' => $id)
));
		
// POST送信なら
if($this->request->is('post')) {
	$data['Profile'][0]['name'] = $this->request->data['Post']['name'];
	$data['Profile'][0]['text'] = $this->request->data['Post']['text'];
	$data['Profile'][0]['area'] = $this->request->data['Post']['area'];
	$data['Profile'][0]['birth'] = $this->request->data['Post']['birthday'];
	$data['Profile'][0]['work'] = $this->request->data['Post']['work'];
	$data['Profile'][0]['sex'] = $this->request->data['Post']['sex'];
	// 登録
	if ($this->User->saveAll($data)) {
		$this->Session->setFlash(__('Edit completed.'));
		$this->redirect(array('action' => 'index'));
	} else {
		$this->Session->setFlash(__('Could not edit. Please redo.'));
		$this->redirect(array('action' => 'edit'));
	}
} else {
	// ビューへ値渡し
	if ($data['Profile']) {
		$this->set('user_name', $data['Profile'][0]['name']);
		$this->set('user_text', $data['Profile'][0]['text']);
		$this->set('user_area', $data['Profile'][0]['area']);
		$this->set('user_birth', $data['Profile'][0]['birth']);
		$this->set('user_work', $data['Profile'][0]['work']);
		$this->set('user_sex', $data['Profile'][0]['sex']);
	}
	$this->set('sexes',
		array(__('man')=>__('man'),
			__('woman')=>__('woman'),
			__('other')=>__('other')
		)
	);
}

10行目の分岐にて POST 送信時であれば登録処理を行い、それ以外であれば編集画面を表示するという処理になります。
35行目〜40行目の処理は、性別セレクトの内容になります。
受け渡し先の変数名を複数形にするとその変数の内容に反映されます。

これで編集画面は完成です。
ユーザー登録直後のマイページ画面は以下のようになります。

site_mypage_edit_1

実際に入力してみてマイページの表示を確認してみましょう。

次は他ユーザーが閲覧したときの表示についてですが、続きは次回に。。。

Share

  • このエントリーをはてなブックマークに追加

Comment

コメントを残す

*がついている欄は必須項目です。

  • Twitter
  • Facebook
  • Google Plus
  • RSS Feed