在MembersTable.php我:CakePHP的3.0.7 - 無法調用方法「」中「默認」提供商場「member_selected」
我從CakePHP的3.0接收以下非常晦澀的消息。 7
Unable to call method "" in "default" provider for field member_selected" InvalidArgumentException
⟩ Cake\Validation\ValidationRule->process CORE\src\Validation\Validator.php, line 656
⟩ Cake\Validation\Validator->_processRules CORE\src\Validation\Validator.php, line 136
⟩ Cake\Validation\Validator->errors CORE\src\ORM\Marshaller.php, line 181
⟩ Cake\ORM\Marshaller->_validate CORE\src\ORM\Marshaller.php, line 428
⟩ Cake\ORM\Marshaller->merge CORE\src\ORM\Table.php, line 2034
⟩ Cake\ORM\Table->patchEntity APP/Controller\MembersController.php, line 104
⟩ App\Controller\MembersController->edit [internal function]
⟩ call_user_func_array CORE\src\Controller\Controller.php, line 411
⟩ Cake\Controller\Controller->invokeAction CORE\src\Routing\Dispatcher.php, line 114
⟩ Cake\Routing\Dispatcher->_invoke CORE\src\Routing\Dispatcher.php, line 87
⟩ Cake\Routing\Dispatcher->dispatch ROOT\webroot\index.php, line 37
如果我刪除了 - >添加(「member_selected」,[「規則」 => [「INLIST」 ...... 每一件事工作正常,但當然,驗證沒有被正確執行。我沒有一個如果使用'inList'的例子,但我想我已經正確設置了它。我還有其他幾個領域表,我必須刪除其他驗證器規則才能通過此錯誤消息(例如,自然數)。
我也會引用另一個標題爲「cakePHP 3.0.7 - 烘焙編輯功能無法執行與Marshaller :: merge()錯誤patchEntity保存保存」的問題。「
這些問題可以通過修改其中一個字段的$ validator設置來「解決」......創建這些錯誤的方法之一是更改字段名稱或類型,並忘記將其更改爲Entity $ _accessible,和函數validationDefault()內的Table $ validator。另外不要忘記$ rules->增加在表:: buildRules()
當然......爲什麼有人想改變字段名稱或類型?哦,如果cakePHP會提供一些關於實際問題的信息(期望的字段不存在,或者指定的字段不應該存在),那將會很好。
無論如何,現在我已經吹了一點點蒸氣,驗證者在爆炸時沒有報告任何有用的東西。我希望有人正在看stackoverflow,以便可以解決。
說了這麼多,我仍然想知道爲什麼'inList'規則不起作用?
回答爲什麼inList和naturalNumber不適合我!
add public
add(string $field , array|string $name , array|Cake\Validation\ValidationRule $rule [])
Adds a new rule to a field's rule set. If second argument is an array then rules list for the field will be replaced with second argument and third argument will be ignored.
Example:
$validator
->add('title', 'required', ['rule' => 'notBlank'])
->add('user_id', 'valid', ['rule' => 'numeric', 'message' => 'Invalid User'])
$validator->add('password', [
'size' => ['rule' => ['lengthBetween', 8, 20]],
'hasSpecialCharacter' => ['rule' => 'validateSpecialchar', 'message' => 'not valid']
]);
好吧,這不是真的!你不能拋棄第二個論點!如果我總是指定第二個參數,然後第三個參數指定規則,那麼驗證過程中的所有錯誤(只要我擔心會報錯)會消失。
謝謝大家誰可以讀取,並提供援助,
我加入RULE_NAME還可以,但仍然得到這個錯誤的「名」,我創建了自定義驗證器。任何想法? –
什麼錯誤?你創造了這個方法嗎? –