CakePHP3でWeb家計簿 ⑫ユーザー情報登録・編集時のバリデーション | ゆきみのWeb開発帳

ゆきみのWeb開発帳

IT系のSEもどきが、個人の勉強の為に、CakePHP3やPython3などでの開発記録を綴ります。
勉強不足な面もありますが、日々成長中です。

Web家計簿を、で構築した環境にアップすることを目標に、複数回に分けてWeb家計簿を作って行きます。

 

============================

CakePHP3でWeb家計簿 記事一覧

①基本設計

②usersテーブルの作成~bakeコマンド

③Security.saltの変更~DebugKitの非表示

④routes.phpの設定~default.ctpの編集

⑤User.phpの編集

⑥ログイン・ログアウト機能の作成

⑦ユーザー登録機能の作成

⑧トップページ表示機能の作成

⑨マイページ(ユーザー情報閲覧)機能の作成

⑩ユーザー情報編集機能の作成

⑪年月日を日本的な表記へ変更

⑫ユーザー情報登録・編集時のバリデーション ←現在の記事

⑬退会機能の作成

⑭パスワード再設定機能の作成

⑮favicon(ファビコン)の配置

⑯accountsテーブルの作成~bakeコマンド

⑰家計簿登録機能の作成

⑱家計簿一覧機能の作成

⑲家計簿編集機能の作成

⑳家計簿削除機能の作成

㉑家計簿登録・編集時のバリデーション

============================

 

 

今回は、ユーザー情報登録・編集時のバリデーションを行います。

 

 

手順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;
    }

 

次回記事では、退会機能の作成を行います。