【问题标题】:Codeigniter form validation not working?Codeigniter 表单验证不起作用?
【发布时间】:2017-10-18 04:30:27
【问题描述】:

我创建了包含以下字段的注册表单,

  • 姓名
  • 电子邮件
  • 角色
  • 密码
  • 确认密码

但是表单验证不起作用

我尝试了很多但不起作用是我想更改 Config.php 中的任何内容我已经更改了 $config[library],$config[helper] 任何人都可以在这段代码中帮助我。提前谢谢你

这是我的控制器

<?php

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

class Login extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->model('Mod_saloon');
        $this->load->helper(array('form', 'url'));
        $this->load->library(array('session', 'form_validation', 'email')); 
        $this->load->helper('url');
    }
    public function index()
    {
        $this->load->view('login');
    }
    public function show_signup()
    {
        $this->load->view('signup');
    }
    public function signup()
    {
        $config = array(
        array(
                'field' => 'name',
                'label' => 'Username',
                'rules' => 'required|min_length[5]|max_length[12]|is_unique[signup.name]'
        ),
        array(
                'field' => 'password',
                'label' => 'Password',
                'rules' => 'required',
                'errors' => array(
                        'required' => 'You must provide a %s.',
                ),
        ),
        array(
                'field' => 'cpassword',
                'label' => 'Password Confirmation',
                'rules' => 'required|matches[password]'
        ),
        array(
                'field' => 'email',
                'label' => 'Email',
                'rules' => 'required|valid_email|is_unique[signup.email]'
        )
);

$this->form_validation->set_rules($config);

        $this->form_validation->set_rules(
        'name', 'Username',
        'required|min_length[5]|max_length[12]|is_unique[signup.name]',
        array(
            'required'      => 'You have not provided %s.',
            'is_unique'     => 'This %s already exists.'
        )
        );
        $this->form_validation->set_rules('password', 'Password', 'required');
        $this->form_validation->set_rules('cpassword', 'Password Confirmation', 'required|matches[password]');
        $this->form_validation->set_rules('email', 'Email', 'required|valid_email|is_unique[signup.email]');
        if ($this->form_validation->run() == FALSE) 
        {
            echo "<script>alert('Validation Error');</script>";
            $this->load->view('signup');
        } 
        else 
        {
            $name = NULL;
            $role=NULL;
            $email=NULL;
            $password=NULL;
            $cpassword=NULL;

            extract($_POST);

            $signup['$name'] = $name;
            $signup['$role'] = $role;
            $signup['$email'] = $email;
            $signup['$password'] = $password;
            $signup['$cpassword'] = $cpassword;

            $this->Mod_saloon->new_signup($signup);

            $this->load->view('signup');
        }


    }
}

这是我的观点

<form action="signup" method="post">
            <div class="form-group has-feedback">
                <input type="text" class="form-control" name="name" placeholder="Name">
                <span class="glyphicon glyphicon-user form-control-feedback"></span>
            </div>
            <select class="form-control" name="role">
                <option disabled selected value> --Select the Role-- </option>
                <option value="admin">Admin</option>
                <option value="user">User</option>
            </select>
            <div class="form-group has-feedback">
                <input type="email" class="form-control" name="email" placeholder="Email">
                <span class="glyphicon glyphicon-envelope form-control-feedback"></span>
            </div>
            <div class="form-group has-feedback">
                <input type="password" class="form-control" name="password" placeholder="Password">
                <span class="glyphicon glyphicon-lock form-control-feedback"></span>
            </div>
            <div class="form-group has-feedback">
                <input type="password" class="form-control" name="cpassword" placeholder="Confirm Password">
                <span class="glyphicon glyphicon-lock form-control-feedback"></span>
            </div>
            <div class="gap"></div>
            <button type="submit" class="btn btn-primary btn-block btn-flat centered" style="width:35%;">Create User</button>
        </form>

【问题讨论】:

    标签: forms codeigniter validation


    【解决方案1】:

    我认为您的问题不在于您的表单验证不起作用...在您的控制器中,您的“注册”功能似乎无法在任何地方运行。您需要检查您的路线和用于运行的功能您需要调用的链接

    $this->注册

    您还需要在提交表单时调用它,因此在您的视图中,提交按钮必须具有您应该拥有的名称和值(例如:name="create_user",value="something")注册

    If ($this->input->post('create_user')){做表单验证}

    【讨论】:

      【解决方案2】:

      改变动作形式

      <form action="<?php echo base_url()?>index.php/Login/signup" method="post">
      

      并且无需多次设置规则。你可以使用数组方法,也可以单独设置规则

      【讨论】:

        【解决方案3】:

        您的代码需要大量修正

        1. 表单标签

        您需要先更改表单标签:

        <form action="<?= base_url('login/signup') ?>" method="post">
        
        1. 将您的配置数组放入配置文件夹。 在form_validation.php 中添加您的配置数组,在此文件中添加以下代码。

        application/config/form_validation.php

        $config = array(
            'signup_validation' => array(
                array(
                        'field' => 'name',
                        'label' => 'Username',
                        'rules' => 'required|min_length[5]|max_length[12]|is_unique[signup.name]'
                ),
                array(
                        'field' => 'password',
                        'label' => 'Password',
                        'rules' => 'required',
                        'errors' => array(
                                'required' => 'You must provide a %s.',
                        ),
                ),
                array(
                        'field' => 'cpassword',
                        'label' => 'Password Confirmation',
                        'rules' => 'required|matches[password]'
                ),
                array(
                        'field' => 'email',
                        'label' => 'Email',
                        'rules' => 'required|valid_email|is_unique[signup.email]'
                )
            )
            );
        
        1. 您的控制器功能

        这是你的控制器功能的代码

        public function signup()
        {
        
            if ($this->form_validation->run('signup_validation') == TRUE) {
        
                // Your sign up the code if validation is true. 
        
            } else {
                // load the view 
        
        
                //User validation_errors(); to show all your validation error at view
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2012-07-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-07
          • 2020-09-28
          • 2012-02-26
          • 1970-01-01
          • 2015-01-20
          相关资源
          最近更新 更多