CodeIgniter 表单验证。多次通话无效

问题描述 投票:0回答:2

我正在使用 CodeIgniter。我一直在尝试调试一个不起作用的脚本。

我得出的结论是,当使用

$this->form_validation->run();
(表单验证类)时,在第一个命名调用(例如
$this->form_validation->run(form_1);
)之后,所有后续调用都返回 true。

我正在开发一个多步骤表单,当

$this->form_validation->run(form_1);
正确返回 true 时,
$this->form_validation->run(form_2);
错误返回 true。

有人知道为什么吗?是否可以在控制器内的单个函数中保留多个调用,或者是否有特殊的方法? 干杯

php forms codeigniter validation
2个回答
3
投票

codeigniter 的设置方式不允许您使用多个规则进行验证,您可以使用功能来扩展表单助手以对规则进行分组(http://ellislab.com/codeigniter/forums/viewthread/120221 )或者像我在

application/config/form_validation.php
中所做的那样,我只是将多个组组合成自己的一组规则,并引用组合规则的单个规则。

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

$config = array(

  "campaign" => array(
    array(
      "field" => "campaign[title]",
      "label" => "campaign title",
      "rules" => "trim|required|max_length[255]|xss_clean"
    )
  ),

  "user" => array(
    array(
      "field" => "user_info[email]",
      "label" => "email",
      "rules" => "trim|required|valid_email|is_unique[user_info.email]|max_length[255]|xss_clean"
    )
  )
);

$config["campaign_user"] = array_merge($config['campaign'], $config['user']);

兴趣线是最后一条,其中两个规则相结合:

$config["campaign_user"] = array_merge($config['campaign'], $config['user']);

在你的控制器中你只需调用单个规则:

if($this->form_validation->run('campaign_user'))
{
    # validation successful
}

0
投票

请检查您的 set_rules() 函数中是否传递了参数 (form1) 和 (form2)...如果可以,则让您自己的第一个 form_validation 调用返回 FALSE,然后查看对 form_validation 的第二个调用是否仍在返回正确。

© www.soinside.com 2019 - 2024. All rights reserved.