【问题标题】:select box validation in CodeigniterCodeigniter 中的选择框验证
【发布时间】:2011-10-11 05:09:41
【问题描述】:

我是 Codeigniter 的新手,我在选择框验证方面遇到了一些麻烦。我想要一开始的默认选择值。

<select name="schooGroups[]">
<option value="0">Select User Group</option>
<option value="1">Admin</option>
</select>

如何在表单中将其设为必填字段并在选择零“0”值时显示错误消息。

【问题讨论】:

  • 不需要为选择框创建数组,例如schooGroups[],后缀[]创建一个数组,除非另​​有需要或使用多个选择框。

标签: php codeigniter codeigniter-form-helper


【解决方案1】:

这会将条目标记为“已选择”,因为...默认情况下已选择。您想要一个多选下拉菜单,对吗?

<select name="schoolGroups[]" multiple="multiple">
<option value="0" selected="selected">Select User Group</option>
<option value="1">Admin</option>
</select>

至于验证,您可能想建立自己的验证规则:

你的控制器的方法:

//...
$this->form_validation->set_rules('schoolGroups','School groups','required|callback_check_default');
$this->form_validation->set_message('check_default', 'You need to select something other than the default');

//...

添加这个其他方法:

function check_default($array)
{
  foreach($array as $element)
  {
    if($element == '0')
    { 
      return FALSE;
    }
  }
 return TRUE;
}

如果您只想要单选(那么无法进行多选),那就更简单了:

html:

<select name="schoolGroups">
<option value="0" selected="selected">Select User Group</option>
<option value="1">Admin</option>
</select>

验证方法:

 $this->form_validation->set_rules('schoolGroups','School groups','required|callback_check_default');
  $this->form_validation->set_message('check_default', 'You need to select something other than the default');

回调:

function check_default($post_string)
{
  return $post_string == '0' ? FALSE : TRUE;
}

【讨论】:

  • 感谢 Damien 的及时回复。我只是添加它并得到错误消息“无法访问与您的字段名称相对应的错误消息”而不是我的:(我错过了一些东西?。
  • 完成了,我使用回调函数名作为 set_message 中的字段名。 $this->form_validation->set_message('check_default', '你需要选择默认以外的东西');
  • 是的,对不起,我的错误,我匆忙添加了那部分!我现在更正了它,以供将来参考。很高兴它正在工作!
【解决方案2】:

这样做的正确方法是将默认选项的值设置为空!然后你可以使用一个简单的 form_validation 规则,比如文本字段:

<select name="schoolGroups">
  <option value="">Select User Group</option>
  <option value="1">Admin</option>
</select>

.

$this->form_validation->set_rules('schoolGroups','School groups','required');

【讨论】:

  • 100% 同意,但有时您的列表是从数组中填充的,别无选择,只能选择第一个选项 0
【解决方案3】:

这个对我有用。

观点

<select name="schoolGroups[]" multiple="multiple">
    <option value="">Select User Group</option>
    <option value="1">Admin</option>
</select>

控制器

$this->form_validation->set_rules('schoolGroups','School groups','callback_check_default');

回调

function select_validate()
{
    $choice = $this->input->post("schoolGroups");
    if(is_null($choice))
    {
        $choice = array();
    }
    $schoolGroups = implode(',', $choice);

    if($schoolGroups != '') {
        return true;
    } else {
        $this->form_validation->set_message('select_validate', 'You need to select a least one element');
        return false;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-12
    • 2013-01-05
    • 1970-01-01
    • 2010-11-19
    • 2015-10-10
    • 1970-01-01
    • 2011-10-24
    相关资源
    最近更新 更多