CI3文档明确指出:“由于尚未告知Form Validation类进行任何验证,因此默认情况下它返回FALSE(布尔值false)。The run()
方法仅在成功应用规则后才返回TRUE。没有任何失败。”。
我有以下方法片段。显然,在第一个视图上,该视图将始终吐出“警告-糟糕,出现了问题”,但没有validates_errors()。我该如何解决?可以检查一下表单是否为$ _POST吗?关于完成的最佳方法或建议是什么? bootstrap_alert()只是将错误或成功消息包装到引导警报中。
if ($this->form_validation->run() == FALSE) {
$message = array( 'message' => 'Warning - Ooops something went wrong '.validation_errors(),
'class' => 'danger', // must be warning, danger, success or info.
);
$this->data['alert'] = bootstrap_alert($message);
$this->load->view($this->mh_template, $this->data);
} else {
$my_time_zone = $this->input->post('timezones');
$user_id = $this->ion_auth->user()->row()->id;
$setting_insert_or_update = 'user_time_zone';
$this->MH_user_settings_model->mh_insert_or_update_setting($setting_insert_or_update, $my_time_zone, $user_id);
$message = array( 'message' => 'Success - Timezone updated',
'class' => 'success', // must be warning, danger, success or info.
);
$this->data['alert'] = bootstrap_alert($message);
$this->load->view($this->mh_template, $this->data);
}
这是我最终要做的:
//设置表单规则 $ this-> form_validation-> set_rules('timezones','timezones','required');
if ($this->form_validation->run() == FALSE) {
$this->load->view($this->mh_template, $this->data);
} else {
$my_time_zone = $this->input->post('timezones');
$user_id = $this->ion_auth->user()->row()->id;
$setting_insert_or_update = 'user_time_zone';
$this->MH_user_settings_model->mh_insert_or_update_setting($setting_insert_or_update, $my_time_zone, $user_id);
$message = array( 'message' => 'Success - Timezone updated',
'class' => 'success', // must be warning, danger, success or info.
);
$this->data['alert'] = bootstrap_alert($message);
$this->session->set_flashdata('message', $this->data['alert'] );
redirect('/MH_app_private/mh_app_settings');
}
答案 0 :(得分:1)
检查请求是否为POST以显示或不显示警告。
答案 1 :(得分:0)
我没有意识到我可以使用以下格式设置validation_errors():
$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
这终于解决了问题。