【问题标题】:Appending $model->errors() array in CodeIgniter 4在 CodeIgniter 4 中附加 $model->errors() 数组
【发布时间】:2022-10-25 15:59:25
【问题描述】:

我有表格来提交表格。这张桌子有我设置的模型validationRules。但是在某些情况下,我偶尔需要 1 个字段。所以,我没有把这个暂定的必填字段放在validationRules 上。

当我们调用 $model->errors() 时如何附加新的错误项。我尝试推送新项目,但现有的 $model->errors() 总是替换为我想附加的项目。

像这样:

...
$data = [
   'name' => 'Jane Doe',
   'address' => 'California',
   'gender' => 'Female',
   'hobby' => 'Reading novel',
   'book_genre' => 'Thriller'
];

if( $model->insert($data) ) {
   $response = [
      'success' => true,
      'msg' => 'Good job'
   ];
} else {

   $errors = $model->errors();

   if($this->request->getPost('hobby') == 'Reading novel' && $this->request->getPost('book_genre') == '') {
      $errors['book_genre'] = 'Book genre must be filled.';
   }
   
   $response = [
      'success' => false,
      'msg' => '<p>' . implode('</p><p>', $errors) . '</p>'
   ];
}
...

关键是,如何在 $model->errors() 上追加/推送新项目。可能吗?为什么它被替换没有附加。

谢谢。

【问题讨论】:

    标签: php codeigniter model-view-controller codeigniter-4


    【解决方案1】:

    例如,当该字段为必填时创建您的条件

    if(condition){
    
        $this->model->setValidationRule('your field', 'your rules');
    
    }
    

    满足条件时,添加该字段的规则,否则不添加

    现在在错误数组中,如果满足条件,您也将拥有这个

    显然在检查带有验证的字段之前先检查

    if(condition){
        
        $this->model->setValidationRule('your field', 'your rules');
        
    }
    
    if( $model->insert($data) ) {
        ...
    

    【讨论】:

      猜你喜欢
      • 2020-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-20
      • 1970-01-01
      • 2022-01-25
      • 2021-01-31
      • 1970-01-01
      相关资源
      最近更新 更多