###前提・実現したいこと
cakephp3 勉強中の初心者です。
入力フォームからデータを取得し、DBへの登録処理(register)を作成しているのですが、エラーとなりうまくいきません。
どこが誤っていてエラーとなっているのか、どのように実現すればいいのかご教示ください。よろしくお願いいたします。
自分で調べた限りでは、コントローラ内のregister()でnewEntityした際に、$memberに入力フォームのjoinyearの値が設定されていないことまではわかったのですが、なぜ値が設定されていないのか、そもそもやり方がおかしいのか、理解できていない状況です。
何卒、ご教示いただけますようよろしくお願いいたします。
###コントローラー
php
1<?php 2 3namespace App\Controller; 4 5//use Cake\Event\Event; 6use Cake\ORM\Query; 7use \Exception; 8use Cake\Log\Log; 9use Cake\Datasource\ConnectionManager; 10 11class MembersController extends AppController{ 12 13~~~~ 中略 ~~~~ 14 15 public function register(){ 16 if ($this->request->is('post')) { 17 $member = $this->Members->newEntity($this->request->data); 18 if($this->Members->save($member)){ 19 $this->Flash->success('データの登録が完了しました'); 20 return $this->redirect('\members\index');//一覧へ戻る 21 }else{ 22 $this->Flash->error('データの登録に失敗しました'); 23 } 24 } 25 $this->set('entity',$this->Members->newEntity()); 26 } 27 28~~~~ 中略 ~~~~ 29 30}
###ビュー
php
1<h1>Edit screen</h1> 2<?=$this->Form->create($entity,['type'=>'post','url'=>['action'=>'register']]) ?> 3<fieldset> 4<?=$this->Form->input('familyname',['type'=>'text'])?> 5<?=$this->Form->input('firstname',['type'=>'text'])?> 6<?=$this->Form->input('sex', 7 [ 8 "type" => "radio", 9 "options" => [ "1" => "男性", 10 "2" => "女性"] 11 ] 12 ); 13?> 14<?=$this->Form->input('dept', 15 [ 16 "type" => "radio", 17 "options" => [ "1" => "総務部", 18 "2" => "営業部"] 19 ] 20 ); 21?> 22<?=$this->Form->input('joinyear',['type'=>'year',"minYear" => 2000,"maxYear"=>date( "Y" ) ])?> 23<?=$this->Form->input('profile', 24 [ 25 "type" => "textarea", 26 "label" => "profile" 27 ] 28 ); 29?> 30</fieldset> 31<?=$this->Form->button("register") ?> 32<?=$this->Form->end()?> 33
###テーブル関係
<?php namespace App\Model\Table; use Cake\ORM\Query; use Cake\ORM\RulesChecker; use Cake\ORM\Table; use Cake\Validation\Validator; class MembersTable extends Table { public function validationDefault(Validator $validator) { $validator //->allowEmpty('id') ->notEmpty('id') ->integer('id'); $validator ->notEmpty('familyname') ->ascii('familyname') ->minLength('familyname',2,'2文字以上入力ください。') ->maxLength('familyname',10,'10文字以下で入力ください。'); $validator ->notEmpty('firstname') ->ascii('firstname') ->minLength('firstname',2,'2文字以上入力ください。') ->maxLength('firstname',10,'10文字以下で入力ください。'); $validator ->notEmpty('sex') ->integer('sex') ->inlist('sex',['1','2']); $validator ->notEmpty('dept') ->integer('dept') ->inlist('dept',['1','2']); $validator ->notEmpty('joinyear'); $validator ->notEmpty('profile') ->ascii('profile') ->minLength('profile',10,'10文字以上入力ください。') ->maxLength('profile',50,'50文字以下で入力ください。'); return $validator; } }
php
1<?php 2namespace App\Model\Entity; 3 4use Cake\ORM\Entity; 5 6class Member extends Entity { 7 8 protected $_accessible = [ 9 '*' => true, 10 'id' => false 11 ]; 12} 13
###補足情報(言語/FW/ツール等のバージョンなど)
cakePHP3.4.6
PHP5.6.30
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/23 03:11
2017/05/23 03:17
2017/05/23 03:38
2017/05/23 03:46 編集
2017/05/23 03:52
2017/05/23 04:40