【发布时间】:2016-10-26 14:15:01
【问题描述】:
我有一个使用 Codeigniter 和 PHP 创建的 HTML 表单,我正在尝试在 2 个字段上设置验证。这些字段可以留空,但如果填充了一个而不填充另一个,则应生成错误。这些字段是:
-ltitle[]
-llink[] //array of multiple links corresponding to ltitle[]
我仅在填充任一字段时才尝试实施验证。
if( !empty($_POST['ltitle']) || !empty($_POST['llink']) )
{
$this->form_validation->set_rules('ltitle[]', 'ltitle', 'xss_clean|callback_check_link');
$this->form_validation->set_rules('llink[]', 'llink', 'xss_clean|callback_check_link');
}
check_link 函数:
function check_link($ltitle){
$llink = $_POST['llink'];
if(empty($ltitle) && empty($llink) )
{
return true;
}
elseif( (empty($ltitle) && !empty($llink) ) || (!empty($ltitle) && empty($llink) ) )
{
$this->form_validation->set_message('check_link', 'Complete the link fields correctly');
return false;
}
else
{
return true;
}
}
在两个字段都为空的情况下提交表单时,错误消息显示“正确完成链接字段”,表示 check_link 函数已执行。但是字段是空的?? !非常感谢您对此的帮助!
【问题讨论】:
-
为什么加了
$llink = $_POST['llink'];而不加$ltitle= $_POST['ltitle'];?您的回调函数似乎在检查$ltitle时会按预期工作,但在检查$llink时不会。 -
更改此
if( !empty($_POST['ltitle']) && !empty($_POST['ltitle']) ) -
我改变了 check_link: "function check_link(){ $ltitle = $_POST['ltitle']; $llink = $_POST['ltitle']; if( (empty($ltitle) && !empty($llink) ) || (!empty($ltitle) && empty($llink) ) { $this->form_validation->set_message('check_link', '正确填写链接字段'); return false; } else { return true; } } " 现在允许提交空白。但是当只填写一个字段时它不会抛出错误?
标签: php html forms codeigniter