【发布时间】:2016-06-03 12:39:21
【问题描述】:
我正在使用 Codeigniter,并且正在尝试使 form_validation 工作。
昨天我开始检查我网站的一些表单,使用 codeigniter 默认规则,有些使用我自己的回调。 我昨天测试了每个表格,它都可以工作,今天,我处理了一些其他表格,这些表格不起作用,我想测试昨天的表格,现在它们也不起作用,我不明白为什么。
我的一种形式:
<form id="form_group_data" name="form_group_data" method="post" class="form-horizontal" action="<?php echo site_url('cms/cms/add')?>">
<p>
<div class="form-body">
<div class="form-group">
<label class="col-md-2 control-label" for="cms"><?php echo lang('nomcms'); ?><span class="required"> * </span></label>
<div class="col-md-4">
<input id="cms" class="form-control" type="text" rows="5" name="cms" required="required" value="">
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label" for="telephone"><?php echo lang('phone'); ?><span class="required"> * </span></label>
<div class="col-md-4">
<input id="telephone" class="form-control" placeholder="<?php echo lang('exemple_number'); ?>" type="text" rows="5" name="telephone" required="required" value="">
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label" for="email"><?php echo lang('email'); ?><span class="required"> * </span></label>
<div class="col-md-4">
<input id="email" class="form-control" type="text" rows="5" name="email" required="required" value="">
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label" for="id_localite"><?php echo lang('localite'); ?><span class="required"> * </span></label>
<div class="col-md-4">
<?php echo form_dropdown('id_localite', $id_localite, null,'class="form-control" required="required"')?>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label" for="id_langue"><?php echo lang('langue'); ?><span class="required"> * </span></label>
<div class="col-md-4">
<?php echo form_dropdown('id_langue', $id_langue, null,'class="form-control" required="required"')?>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2"><?php echo lang('active'); ?></label>
<div class="col-md-9">
<input type="checkbox" checked="checked" name="actif" class="make-switch" data-on-text=" <?php echo lang('actif'); ?> " data-off-text=" <?php echo lang('inactif'); ?> " data-on-color="info" data-off-color="danger">
</div>
</div>
</div>
<input type="submit" value="<?php echo lang('add'); ?>" class="btn blue"/>
<button type="button" class="btn default" onclick="window.location='<?php echo site_url('cms/cms')?>'"><?php echo lang('cancel'); ?></button>
</div>
</p>
</form>
表单验证:
$this->form_validation->set_rules('cms', 'cms', 'trim|required|xss_clean|callback_customAlphaNum');
$this->form_validation->set_rules('telephone', 'telephone', 'trim|required|xss_clean|callback_customNatural|exact_length[12]');
$this->form_validation->set_rules('email', 'email', 'trim|required|xss_clean|valid_email');
$this->form_validation->set_rules('id_localite', 'id_localite', 'trim|required|xss_clean');
$this->form_validation->set_rules('id_langue', 'id_langue', 'trim|required|xss_clean');
// callback function
function customAlphaNum($str)
{
if ( !preg_match('/^[a-z0-9 -]+$/i',$str) )
{
return false;
}
}
function customNatural($str)
{
if ( !preg_match('/^[0-9+]+$/i',$str) )
{
return false;
}
}
// custom error message
$this->form_validation->set_message('customAlphaNum', lang('form_validation_customAlphaNum'));
// custom error message
$this->form_validation->set_message('customNatural', lang('form_validation_customNatural'));
if ($this->form_validation->run() == FALSE)
{
$this->insert();
}
else
{
...
}
现在,我在字段中写入的任何内容都会触发错误,即使它遵循我创建的规则。实际上,它会触发我创建的每个回调,但不会触发来自 codeigniter 的默认规则(例如 valid_email、required 等),所以这是我的回调有问题,但昨天我没有问题。有谁知道什么可能导致这个问题?
【问题讨论】:
-
你加载了表单验证库吗?
-
是的,使用 $this->load->library('form_validation');
-
在回调中添加值
-
这样... callback_customAlphaNum['.$this->input->post("username").']
-
你需要在你的两个回调
customAlphaNum和customNatural中添加return TRUE
标签: php forms codeigniter