[Web][CakePHP]ユーザー登録時のバリデーションを設定してみる(コントローラ編)

モデルでバリデーションを行い、ユーザー情報のチェックを行う。

それと、メソッド名をaddからregisterに変更してみた。

<?php
class MemberController extends AppController
{
	var $name = 'Member';
	var $uses = 'User';
	var $components = array('Auth');
	var $helpers = array('Html', 'Form');
	
	function beforeFilter()
	{
		parent::beforeFilter();
		$this->Auth->allow('register');
	}
	
	function index()
	{
	}
	
	function login()
	{
	}
	
	function logout()
	{
		$this->redirect($this->Auth->logout());
	}
	
	function register()
	{
		$this->pageTitle = 'MOSHIMORE ユーザー登録';
		if(!empty($this->data))
		{
			$this->User->set($this->data['User']);
			$errormsgs = $this->validateErrors($this->User);
			$errorcount = $this->validate($this->User);
			if(
				empty($this->data['User']['password2']) ||
				$this->data['User']['password1'] != $this->data['User']['password2']
			)
			{
				$errormsgs['password2'] = '確認用パスワードにパスワードと同じ値を入力してください。';
				$errorcount++;
			}
			
			if($errorcount == 0)
			{
				if(!empty($this->data['input']['step']) && $this->data['input']['step'] == 'confirm')
				{
					$this->data['User']['password'] = $this->Auth->password($this->data['User']['password1']);
					$this->User->create();
					$this->User->save($this->data['User']);
					$this->redirect('/member/login', true);
				}
				else
				{
					$this->render('confirm');
				}
			}
			else
			{
				$this->set('errormsgs', $errormsgs);
				$this->set('errorcount', $errorcount);
			}
		}
	}
}
?>