【问题标题】:Form validation and form action not working in codeigniter 3表单验证和表单操作在 codeigniter 3 中不起作用
【发布时间】:2016-06-12 13:41:46
【问题描述】:

我正在构建我的第一个 codeigniter 应用程序并试图弄清楚如何实现基本的身份验证功能。以下是我的登录视图:

<div><?php echo validation_errors(); ?></div>
<?php echo form_open('admin/index', ['role' => 'form']); ?>
          <fieldset>
            <legend><i class="fa fa-lock"></i> Secure Sign-In</legend>
            <div class="form-group">
              <label for="username">Username</label>
              <?php echo form_input(['name' => 'username', 'id' => 'username', 'class' => 'form-control', 'value' => '']); ?>
            </div>
            <div class="form-group">
              <label for="password">Password</label>
              <?php echo form_password(['name' => 'password', 'id' => 'password', 'class' => 'form-control']) ?>
              <div class="checkbox">
                <label>
                  <?php echo form_checkbox(['name' => 'remember_me', 'value' => 'Remember Me']) ?> Remember Me
                </label>
              </div>
            </div>
            <button type="submit" class="btn btn-primary">
              <i class="fa fa-sign-in"></i> Sign In
            </button>
            <a class="btn btn-link" href="">Forgot Your Password?</a>
          </fieldset>
        <?php echo form_close(); ?>

管理控制器如下:

defined('BASEPATH') OR exit('No direct script access allowed');

class Admin extends CI_Controller {

    public function __construct() 
    {
        parent::__construct();
    }

    public function index()
    {
        $this->load->view('templates/header');
        $this->load->view('auth/login_view');
        $this->load->view('templates/footer');
        $this->load->helper('url','form');
        $this->load->library('form_validation');
        $this->form_validation->set_rules('username', 'UserName', 'required');
        $this->form_validation->set_rules('password', 'Password', 'required|min_length[4]');
    }
}

当我提交空表单(在用户名和密码输入字段中没有输入)时,理想情况下它应该执行验证并在登录视图上显示错误,但事实并非如此。它什么也没显示。

另外,当我在 chrome 中打开登录视图页面源时,我注意到表单操作值看起来有点不同。它具有以下价值:

<form action="http://[::1]/meshi/index.php/admin/index" role="form" method="post" accept-charset="utf-8">

我不确定 [::1] 在表单操作中的含义。另外,我没有在配置文件中指定基本 url 值。

【问题讨论】:

  • 在 Codeigniter3 中 base_url 设置在 config.php 中是强制性的。设置后,您将在表单操作中看到真正的 url 而不是 [::1]

标签: php forms codeigniter


【解决方案1】:

在 Codeigniter3 中 base_url 设置在 config.php 中是强制性的。设置后,您将在表单操作中看到真实的 url 而不是 [::1]

$config['base_url'] = 'http://localhost/meshi/';

其次,当您想查看表单错误时,您应该在查看页面中使用validation_errors()

echo validation_errors();

确保在使用前加载表单助手

$this->load->helper('form');

【讨论】:

  • 谢谢。我在配置文件中添加了基本 url,现在表单操作似乎已修复。但我仍然没有看到验证错误。我已经更新了我的视图以包含 validation_errors();
  • 已加载表单助手?
  • 是的。您可以在管理控制器索引函数内部看到。 $this->load->helper('url','form');
  • 如果您没有收到任何错误,那么它可以正常工作。也许&lt;div&gt; 不可见。查看源代码
  • 它只有在添加一个 if 子句来检查验证是真还是假并在 if 中加载视图后才起作用。 'if($this->form_validation->run() == FALSE) { $this->load->view('templates/header'); $this->load->view('auth/login_view'); $this->load->view('模板/页脚'); } else { $this->load->view('successform'); }'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
相关资源
最近更新 更多