php - 配置中的 Codeigniter 表单验证取决于另一个输入

标签 php codeigniter

我正在通过配置使用 Codeigniter 表单验证(而不是手动设置规则)。我需要的是根据其他字段设置所需的规则。例如,假设我们有以下规则:

'user' => array(
    array(
        'field' => 'user[phone]',
        'rules' => 'required'
    ),
    array(
        'field' => 'user[email]',
    ),
    array(
        'field' => 'user[foo]',
        //'rules' => 'required'
    )
),

foo 输入必须基于 email 字段。

注意:可以通过回调函数来完成,但这在大型应用程序中有点困难。有什么想法吗?

最佳答案

在您的 APPPATH.'config/form_validation.php' 文件中设置分隔的规则数组

$config = array(
    'yes_email' => array(
        array(
            'field' => 'user[phone]',
            'rules' => 'required'
        ),
        array(
            'field' => 'user[email]',
        ),
        array(
            'field' => 'user[foo]',
            'rules' => 'required'
        )
    ),
    'no_email' => array(
        array(
            'field' => 'user[phone]',
            'rules' => 'required'
        ),
        array(
            'field' => 'user[email]',
        ),
        array(
            'field' => 'user[foo]',
        )
    ),
);

,然后在 Controller 中使用您想要的任何规则集。在示例中

if ($this->form_validation->run($rule) == FALSE) {
    $this->load->view('myform');
} else {
    $this->load->view('formsuccess');
}

在此检查之前,您应该确定需要什么规则,例如:

$rule = 'no_email'; // set default value

switch($this->input->post('email')) {
    case false:
        break;
    default:
        $rule = 'yes_email'; // email has been posted / needed by app etc.
}

更多内容请参见 docs .

关于php - 配置中的 Codeigniter 表单验证取决于另一个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43917069/

相关文章:

php - sql - 显示给定日期(date_start 和 date_end)的天数跨度,如果 end_date 超过则应用惩罚

php - 无法上传 csv 文件

php - 对于那些似乎不适合作为 CodeIgniter 中的模型或库的页面特定小类该怎么办?

codeigniter - 将我的 Azure Linux VM 连接到 clearDB MySQL 数据库的步骤是什么?

javascript - 显示页面其他位置的 JavaScript 隐藏元素

php - 使用 PHP 和 FPDF 插入图像

php - php中SoapClient请求和Soap curl请求的区别

php - 如何在 PHP 中回显一行 HTML?

php - 使用 Maatwebsite Laravel-Excel 加载超链接

javascript - 如何使用 codeinighter 和 ajax 检查用户表中是否存在电子邮件