在Codeigniter中,以下代码通常用于具有窗体的页。但是,当用户第一次登陆页面时,表单验证失败时,就会通过相同的路径路由。
如本例所示,闪存数据将触发。即使用户只是在页面上登陆,还没有提交任何表单。
我正在尝试将一个新的类名回显到某个输入字段,以便在验证失败时突出显示它们。但目前,它强调的领域在第一次加载以及。
我知道我可以回显validation_error或form_error。是否有一种方法可以回显未绑定到字段名且仅在提交失败之后的泛型消息?
// rules and other stuff above
if ($this->form_validation->run() == FALSE){
$this->session->set_flashdata('errorClass',"is-invalid");
$this->load->view('defaultOrFalse');
}else{
$this->load->view('success');
}
//view file
<input class=" <?php $this->session->flashdata('errorClass') ; ?>">基本上,我试图获得引导4的输入验证以显示https://getbootstrap.com/docs/4.0/components/forms/#server-side。
发布于 2018-03-06 02:08:12
我不知道您的确切设置,但您可以执行如下逻辑:
<?php
class Some_controller extends CI_Controller {
// controller/search/{$term}
public function some_method($term = null) {
// where some_field is some field in your form
// that gets posted on submit
if ($this->input->post('some_field')) {
// or if (isset($_POST)) {
if ($this->form_validation->run() == FALSE) {
$this->session->set_flashdata('errorClass', "is-invalid");
$this->load->view('defaultOrFalse');
} else {
$this->load->view('success');
}
} else {
// default view
}
}
}
?>关于你的第二个问题:
<h5>Username</h5>
<?php echo form_error('username'); ?>
<input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" <?php if (!empty(form_error('username'))) { echo "class='error'"; } ?> />也可以使用一个助手来代替form_error来检查您的类是否有错误(还没有验证这一点,但它应该这样做)。
/**
* Checks if form validation field by name
* has error
*
* @param string $field Name of field
* @return boolean
*/
function field_has_error($field) {
$CI = &get_instance();
$CI->load->library('form_validation');
$arr = $CI->form_validation->error_array();
if (isset($arr[$field])) {
return true;
}
return false;
}用法:
<?php if (field_has_error('username')) { echo "class='error'"; } ?> />
https://stackoverflow.com/questions/49121573
复制相似问题