CakePHP3.8を使用しています。
テキストボックスの値をリクエストデータとして投げ、
それをpatchEntity()後にsave()メソッドで登録...
というような登録の流れを作っていました。
途中であることに気が付き、テキストボックスの値が空の場合に、
Tableクラスに設定したValidationルールのうち自分で設定したcustomルール(メソッド?)に
処理が通っていないみたいでした。
以下完結なソースコードです。
class HogeTable extends Table { public function validationDefault(validator $validator) { $validator ->scalar('any_text') ->allowEmptyString('any_text') ->maxLength('any_text', 100, 'error message') ->add('any_text', 'custom', 'rule' => function($val) { // 登録時、値が空欄だとここを通ってくれないです。 // 全角半角スペースのみ、改行のみだと通ってくれます。 // 追記:もちろん文字列を入力して登録した際には通ってくれます。 Log::error('read!!'); return true; }); return $validator; } }
自分で色々調べては見たのですが、これといった情報が見つからず..
「これが原因では無いか」など、思い当たるものがありましたら、教えていただけませんでしょうか..(._.)
※
補足として、以下を使用しています。
win10, Virtualbox, CentOS7, PHP7, MySQL
追記
- 空の値とは、
any_text = ''
の状態で、gettype
で型を確認するとstringでした。 - 空の値を登録時、Controller側で
$this->request->getData()
でany_text
がサーバー側に来ていることは確認しております。
回答1件
あなたの回答
tips
プレビュー