Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codeigniter 如何从规则集中排除规则_Codeigniter - Fatal编程技术网

Codeigniter 如何从规则集中排除规则

Codeigniter 如何从规则集中排除规则,codeigniter,Codeigniter,我有一个关于选择验证规则的问题 我将我的验证规则像这样粘贴在模型中 public $validate = array( 'sentence_fields'=> array( 'select_chapter' => array( 'field'=>'select_chapter', 'label'=>'Select chapter', 'rules'=>'required|integer' ), 'sou

我有一个关于选择验证规则的问题

我将我的验证规则像这样粘贴在模型中

public $validate = array(
  'sentence_fields'=> array(
    'select_chapter' => array(
      'field'=>'select_chapter',
      'label'=>'Select chapter',
      'rules'=>'required|integer'
    ),
    'source_sentence' => array(
      'field'=>'source_sentence',
      'label'=>'Source',
      'rules'=>'trim|required|max_length[500]'
    ),
    'translated_sentence' => array(
      'field'=>'translated_sentence',
      'label'=>'Translation',
      'rules'=>'trim|required|max_length[500]'
    ),
    'translated_translation' => array(
      'field'=>'translated_translation[]',
      'label'=>'Select another translation',
      'rules'=>'trim|max_length[500]'
    )
  )
);
然后像这样在控制器中调用它

$validate = $this->sentence_model->validate['sentence_fields'];
$this->form_validation->set_rules($validate);
这是针对create方法的,但是我有一个更新方法,它不需要
select\u章节
规则集

是否有一种简单的方法来调用此规则集(句子字段),但排除
为我的更新方法选择章节


谢谢

如果要排除,请为我的更新方法选择章节。只需像这样使用数组的
unset()
方法即可

$validate = $this->sentence_model->validate['sentence_fields'];

unset($validate['sentence_fields']['select_chapter ']);//unsets your array
$this->form_validation->set_rules($validate);

如果要排除,请为我的更新方法选择章节。只需像这样使用数组的
unset()
方法

$validate = $this->sentence_model->validate['sentence_fields'];

unset($validate['sentence_fields']['select_chapter ']);//unsets your array
$this->form_validation->set_rules($validate);

由于上述方法有效,我建议将其作为一个函数,以实现更好的可读性和易用性。为此,请查看以下内容

public $validate = array(
  'sentence_fields'=> array(
    'select_chapter' => array(
      'field'=>'select_chapter',
      'label'=>'Select chapter',
      'rules'=>'required|integer'
    ),
    'source_sentence' => array(
      'field'=>'source_sentence',
      'label'=>'Source',
      'rules'=>'trim|required|max_length[500]'
    ),
    'translated_sentence' => array(
      'field'=>'translated_sentence',
      'label'=>'Translation',
      'rules'=>'trim|required|max_length[500]'
    ),
    'translated_translation' => array(
      'field'=>'translated_translation[]',
      'label'=>'Select another translation',
      'rules'=>'trim|max_length[500]'
    )
  )
);

public function formValidationRules($validation, $unset = array()) {
     if($unset) {
        return $this->unsetValidation($unset);
     } else {
        return $this->validate[$validation];
     }
}

private function ($unset) {
  $validations = $this->validate[$validation];
  foreach($unset as $key)
  {
     unset($validations[$key]);
  }
  return $validations;
}
通过这种方式,您可以按如下方式进行验证:

$validate = $this->sentence_model->formValidationRules('sentence_fields', ['select_chapter']);

$this->form_validation->set_rules($validate);

由于上述方法有效,我建议将其作为一个函数,以实现更好的可读性和易用性。为此,请查看以下内容

public $validate = array(
  'sentence_fields'=> array(
    'select_chapter' => array(
      'field'=>'select_chapter',
      'label'=>'Select chapter',
      'rules'=>'required|integer'
    ),
    'source_sentence' => array(
      'field'=>'source_sentence',
      'label'=>'Source',
      'rules'=>'trim|required|max_length[500]'
    ),
    'translated_sentence' => array(
      'field'=>'translated_sentence',
      'label'=>'Translation',
      'rules'=>'trim|required|max_length[500]'
    ),
    'translated_translation' => array(
      'field'=>'translated_translation[]',
      'label'=>'Select another translation',
      'rules'=>'trim|max_length[500]'
    )
  )
);

public function formValidationRules($validation, $unset = array()) {
     if($unset) {
        return $this->unsetValidation($unset);
     } else {
        return $this->validate[$validation];
     }
}

private function ($unset) {
  $validations = $this->validate[$validation];
  foreach($unset as $key)
  {
     unset($validations[$key]);
  }
  return $validations;
}
通过这种方式,您可以按如下方式进行验证:

$validate = $this->sentence_model->formValidationRules('sentence_fields', ['select_chapter']);

$this->form_validation->set_rules($validate);

您好,我知道这是如何工作的,但出于某种原因,我仍然在下面的输出中获得select chapter数组<代码>$validate=$this->句子模型->验证['SENTURE\u字段];取消设置($validate['SENTURE_fields']['select_CHAPTION']);打印(验证)$validate['sensition\u fields']['select\u chapter']
unset($validate['select\u chapter'])中的每个键似乎在我们将
句子字段
分配给
$validate
时起作用,您好,我理解这是如何工作的,但出于某种原因,我仍然在下面的输出中获得选择章节数组<代码>$validate=$this->句子模型->验证['SENTURE\u字段];取消设置($validate['SENTURE_fields']['select_CHAPTION']);打印(验证)$validate['sensition\u fields']['select\u chapter']
unset($validate['select\u chapter'])中的每个键似乎在我们为
$validate
分配
句子字段时起作用