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
分配句子字段时起作用