【问题标题】:CodeIgniter validation ruleCodeIgniter 验证规则
【发布时间】:2012-02-17 00:17:01
【问题描述】:

我在配置中的 form_validation.php 中有我的规则,它调用 MY_Form_validation.php 中扩展 CI_Form_validation 的函数。

form_validation.php 规则:

array(
        'field' => 'phone',
        'label' => 'Phone',
        'rules' => 'is_valid_phone'
    ),

MY_Form_validation.php 方法:

public function is_valid_phone($phone)
    {
        echo 'phone validation: '.$phone;
        return preg_match("/\(?\d{3}\)?[-\s.]?\d{3}[-\s.]\d{4}/x", $phone) ? true : false;
    }

form_validation 中不调用 is_valid_phone 和 is_valid_postal_code 的其他规则在开发和生产中都能正常工作。出于某种原因,这两种方法适用于开发,但不适用于生产。 php版本略有不同。开发版 5.2.8 和产品版 5.2.17。所有文件都已同步,我可以确认。我在 is_valid_phone 方法中添加了一个 echo 语句,它显示在 dev 上,但不在 prod 上。

我不知道可能是什么问题。有什么想法吗?

谢谢大家。

【问题讨论】:

  • 你用$this->set_message("is_valid_phone", "The %s is in an invalid phone format XXX-XXX-XXXX");试过了吗
  • 您是否为有效手机的消息设置了 lang 文件?
  • $CI->form_validation->set_message('is_valid_phone','error'); $CI->form_validation->set_message('is_valid_postal_code','error');

标签: php codeigniter


【解决方案1】:

这可能是回声。在显示某些标头之前,您有某种缓存或回显出现问题。

尝试将 echo 值放在字符串上,这样肯定会起作用。您也可以简单地尝试使用 load->view 方法。试试这个:

    $ci = &get_instance();
    $ci->load->view('just_echo',array('data' => 'phone validation: '.$phone));

而视图 just_echo.php 将是:

    <?php
            echo $data;
    ?>

【讨论】:

  • 我之前没有回声,但它不起作用。回显显示在我的开发服务器上,并且验证规则有效。
  • 也许如果你使用 set_message 会起作用。这肯定是有回声的东西。
  • 找到解决方案,文件名为 My_Form_validation。将其重命名为 MY... 并且有效!
猜你喜欢
  • 1970-01-01
  • 2012-11-19
  • 2011-03-19
  • 2015-04-10
  • 1970-01-01
  • 1970-01-01
  • 2013-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多