【現在できていること】
新規登録フォーム -> 確認画面 -> (ModelのTableでバリデートチェック)
-> チェックOKならデータベースに登録
-> チェックNGなら新規登録フォームに戻る
【実現したいこと】 前提:CakePHP 3x
新規登録フォーム -> (ModelのTableでバリデートチェック)
-> チェックOKなら確認画面へ遷移
-> チェックNGなら新規登録フォームに戻る
-> 確認画面 -> (ModelのTableでバリデートチェック)
-> チェックOKならデータベースに登録
-> チェックNGなら新規登録フォームに戻る
データベースにSaveする以外に、バリデートチェック(ルールチェックの方も)をかける方法を教えて欲しいです。
PHP
1UsersTable.php 2 3<?php 4 namespace App\Model\Table; 5 6 use Cake\Event\Event; 7 use Cake\ORM\Query; 8 use Cake\ORM\Table; 9 use Cake\Validation\Validator; 10 use Cake\ORM\RulesChecker; 11 12 class UsersTable extends Table{ 13 14(中略) 15 16// バリデート 17 public function validationDefault(Validator $validator){ 18 return $validator 19 ->add('username', [ 20 'maxLen' => ['rule' => ['maxLength', 10],'message'=>'10文字以内で登録して下さい'], 21 'minLen' => ['rule' => ['minLength', 3],'message'=>'3文字以上で登録して下さい'] 22 ]) 23 ->notEmpty('username','A username is required') 24 ->notEmpty('password','A password is required') 25 ->notEmpty('role','A role is required') 26 ->add('role','inList',[ 27 'rule' => ['inList',['admin','author']], 28 'message' => 'Please enter a valid role' 29 ]); 30 } 31 32// ルールチェッカー 33 public function buildRules(RulesChecker $rules){ 34 $rules 35 ->add($rules->isUnique(['username'],'このユーザーネームは既に登録済みです')); 36 return $rules; 37 } 38 } 39?>
PHP
1UsersController.php 2 3<?php 4namespace App\Controller; 5 6use App\Controller\AppController; 7use Cake\Event\Event; 8use Cake\ORM\Table; 9use Cake\ORM\TableRegistry; 10use Cake\Validation\Validator; 11use Cake\ORM\RulesChecker; 12 13class UsersController extends AppController{ 14 15(中略) 16 17// データベース登録 18 public function add(){ 19 $user = $this->Users->newEntity(); 20 if ($this->request->isPost()) { 21 $data = $this->request->data(); 22 $user = $this->Users->patchEntity($user, $data); 23 if ($this->Users->save($user)) { 24 return $this->redirect(['action' => 'login']); 25 } 26 } 27 $this->set('user', $user); 28 } 29 30// 確認画面出し 31 public function confirm(){ 32 $data = $this->request->data(); 33 $session = $this->request->session(); 34 35 if($this->request->isPost()){ 36 $session->write([ 37 'username' => $data['Users']['username'], 38 'password' => $data['Users']['password'], 39 'role' => $data['Users']['role'], 40 'gender' => $data['Users']['gender'], 41 ]); 42 $this->set('username', $session->read('username')); 43 $this->set('password', $session->read('password')); 44 $this->set('role', $session->read('role')); 45 $this->set('gender', $session->read('gender')); 46 } 47 } 48 49(中略) 50 51} 52 53?>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/28 15:24