【问题标题】:how can I put validation_errors() at the right side of textfield?如何将validation_errors() 放在文本字段的右侧?
【发布时间】:2014-09-14 05:49:12
【问题描述】:

我已按照 CodeIgniter 中的学习教程进行操作,并且我目前正在使用我的参考资料(下面发布的链接)中的相同程序创建一个程序,其中有一个登录表单。我对函数没有任何问题,我只想将validation_errors() 放在文本字段的右侧,如果用户名为空或不正确,错误消息将显示在文本字段的右侧。有没有办法做到这一点?或者我应该使用javascript而不是使用这个validation_errors()?希望有人能帮助我。谢谢!

这是 VIEW 中的代码:

<h3>Log-In with CodeIgniter</h3>
<?php echo validation_errors(); ?>
<?php echo form_open('verifylogin'); ?>
<label for="username">Username:</label>
<input type="text" size="20" id="username" name="username"/>
<br/>
<label for="password">Password:</label>
<input type="password" size="20" id="password" name="password"/>
<br/>
<input type="submit" value="Log-In"/>
</form>

这是 CONTROLLER 中的代码:

    function index() {
    $this->load->library('form_validation');
    $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
    $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database');
    if($this->form_validation->run()==FALSE) {
        $this->load->view('login_view');
    }
    else {
        redirect('home', 'refresh');
    }
}

function check_database($password) {
    $username=$this->input->post('username');
    $result=$this->user->login($username, $password);
    if($result) {
        $sess_array=array();
        foreach($result as $row) {
            $sess_array=array('id'=>$row->id, 'username'=>$row->username);
            $this->session->set_userdata('logged_in', $sess_array); 
        }
        return TRUE;
    }
    else {
        $this->form_validation->set_message('check_database', 'Invalid username or password');
        return FALSE;
    }
}

参考:http://www.codefactorycr.com/login-with-codeigniter-php.html

【问题讨论】:

标签: javascript php html css codeigniter


【解决方案1】:
<h3>Log-In with CodeIgniter</h3>



<?php if (form_error('password')=="Invalid username or password")
 {
    echo form_error('password');
 }
?>

<?php echo form_open('verifylogin'); ?>
<label for="username">Username:</label>
<input type="text" size="20" id="username" name="username"/><?php echo form_error('username'); ?>
<br/>
<label for="password">Password:</label>
<input type="password" size="20" id="password" name="password"/><?php echo form_error('password'); ?>
<br/>
<input type="submit" value="Log-In"/>
</form>

【讨论】:

  • 我试着让它像这样.. 但问题是,当用户名和密码不正确时,错误会显示在密码字段的右侧,它应该在用户名字段之前的上方。
  • 请问您是如何显示错误用户名或密码的错误
  • 是的,我在那里编辑了关于控制器代码的帖子。我有函数 check_database($password) 来检查数据库中的密码是否正确,否则它将显示无效错误。谢谢。
  • 希望你明白了。对吧?
  • 它显示了同样的东西。我试图把
    放在 - 无效的用户名或密码上 - 并且它有效。您的代码看起来很适合单独显示错误。谢谢您的帮助! :)
【解决方案2】:
<?php echo form_open('verifylogin'); ?>

这将一次显示 FORM 的所有错误 - 它们以批量错误的形式出现(未拆分)

<?php echo form_error('username'); ?>
<?php echo form_error('password'); ?>

这是显示单个错误的正确方式,CodeIgniter 为您提供了单独显示错误的方式

showing individual errors in codeigniter

并搜索单独显示错误

您可以在输入字段旁边的 span 标签中显示它们 - 以获得您想要的 O/P 类型

【讨论】:

  • 好的。该错误单独显示在文本字段中,但我真的希望它显示在每个文本字段的右侧,然后 -invalid username or password- 将显示在用户名字段之前的上方。
  • 你可以像这样改变你的标记
    Username
  • 它显示了同样的东西并且没问题。我的另一个担心是 -invalid username or password- 错误消息会显示在密码字段的右侧,即使它的错误消息是单独调用的。我认为它在我的控制器代码中 $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database');就像我把 check_database 放在哪里一样,谢谢! :)
  • 如果你得到你的答案请接受答案,这将有助于改善我的个人资料:)
【解决方案3】:

这就是我所做的......

$this->form_validation->set_message('check_database', '<br/><br/>Invalid username or password');

我将&lt;br/&gt;添加到无效的用户名或密码,这样它就不会放在密码字段中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多