Web家計簿を、CakePHP3 Webサーバー環境構築で構築した環境にアップすることを目標に、複数回に分けてWeb家計簿を作って行きます。
============================
CakePHP3でWeb家計簿 記事一覧
③Security.saltの変更~DebugKitの非表示
⑫ユーザー情報登録・編集時のバリデーション ←現在の記事
============================
今回は、ユーザー情報登録・編集時のバリデーションを行います。
手順1.UsersTable.phpの編集
作成したプロジェクト配下\src\Model\Tableにある『UsersTable.php』を以下の通りに設定します。日本語でメッセージを出力するため、ファイルをUTF-8で保存します。
これを設定すると、DBに登録・編集する際にユーザー名が他のユーザーと被ってもエラーになりません。
public function buildRules(RulesChecker $rules)
{
$rules->add($rules->isUnique(['email'],'既に使われているメールアドレスです。'));
//$rules->add($rules->isUnique(['username']));
return $rules;
}
手順2.更にUsersTable.phpを編集
『UsersTable.php』を以下の通りに設定します。
これを設定すると、DBに登録・編集する際に、パスワード・ユーザ名・性別・郵便番号の文字数チェックと、誕生日の入力チェックと、郵便番号の整数入力チェックなどを自動的に行うようになります。
public function validationDefault(Validator $validator)
{
//他のバリデーション
$validator
->scalar('password')
->requirePresence('password', 'create')
->notEmpty('password')
->minLength('password', 8,'8字以上で入力して下さい。');
$validator
->scalar('username')
->requirePresence('username', 'create')
->notEmpty('username')
->lengthBetween('username', [2, 15], 'ユーザ名は2文字以上、15文字以内で入力して下さい。');
$validator
->integer('sex')
->requirePresence('sex', 'create')
->notEmpty('sex')
->maxLength('sex', 1,'1字で入力して下さい。');
$validator
->date('birthday', ['ymd'],'正しい日付を入力して下さい。')
->requirePresence('birthday', 'create')
->notEmpty('birthday','誕生日を入力して下さい。');
$validator
->scalar('postcode')
->requirePresence('postcode', 'create')
->notEmpty('postcode')
->integer('postcode','整数のみで入力して下さい。')
->lengthBetween('postcode', [7, 8], '郵便番号は7文字以上、8文字以内で入力して下さい。');
$validator
->scalar('userimg')
->integer('userimg')
->requirePresence('userimg', 'create')
->notEmpty('userimg');
$validator
->scalar('pageimg')
->integer('pageimg')
->requirePresence('pageimg', 'create')
->notEmpty('pageimg');
//他のバリデーション
return $validator;
}
次回記事では、退会機能の作成を行います。