首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码点火器,第一次访问验证假诗

问代码点火器,第一次访问验证假诗
EN

Stack Overflow用户
提问于 2018-03-06 00:23:22
回答 1查看 356关注 0票数 0

在Codeigniter中,以下代码通常用于具有窗体的页。但是,当用户第一次登陆页面时,表单验证失败时,就会通过相同的路径路由。

如本例所示,闪存数据将触发。即使用户只是在页面上登陆,还没有提交任何表单。

我正在尝试将一个新的类名回显到某个输入字段,以便在验证失败时突出显示它们。但目前,它强调的领域在第一次加载以及。

我知道我可以回显validation_error或form_error。是否有一种方法可以回显未绑定到字段名且仅在提交失败之后的泛型消息?

代码语言:javascript
复制
// 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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-06 02:08:12

我不知道您的确切设置,但您可以执行如下逻辑:

代码语言:javascript
复制
<?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
        }
    }

}
?>

关于你的第二个问题:

代码语言:javascript
复制
<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来检查您的类是否有错误(还没有验证这一点,但它应该这样做)。

代码语言:javascript
复制
/**
 * 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'"; } ?> />

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49121573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档