0

完成视图后,我开始编写控制器代码:

关于选择菜单的几个问题:

  • 如何验证选择菜单 - 我不希望他们能够选择“请选择”</p>

  • 我还能用吗$this->form_validation->set_rules('','','required');

  • 如何将正确答案发送到控制器?

        <label for="hostingRequired">Hosting Required:</label>
            <select name="hostingRequired">
                <option value="pleaseSelect"> Please Select</option>
                    <option value="yes">Yes</option>
                    <option value="no">No</option>
                </select>
        <label for="domainRequired">Domain Registration: </label>
                    <select name="domainRequired">
                        <option value="pleaseSelect">Please Select</option>
                        <option value="yes">Yes</option>
                        <option value="no">No</option>
                    </select>
        <div id="domainToBeReged">
                    <label for="domainToBeReged">Domain:</label><input name="domainToBeReged" type="text" placeholder="http://www." />
                    <label for="domainToBeReged0">Domain:</label><input name="domainToBeReged0" type="text" placeholder="http://www." />
        </div>
    
4

4 回答 4

1

您可以执行以下操作

然后使用以下验证规则

$this->form_validation->set_rules('','','required|callback_is_default');

function is_default($array)
{
  foreach($array as $element)
  {
    if($element == 'pleaseSelect')
    { 
      return FALSE;
    }
  }
 return TRUE;
}
于 2012-04-06T05:53:13.720 回答
0

在您的验证规则中添加:

$this->form_validation->set_rules('hostingRequired','Hosting Required','required|callback__check_select_yes_or_no');
$this->form_validation->set_rules('domainRequired','Domain registration','required|callback__check_select_yes_or_no');

此外,将此附加方法添加到您的控制器作为验证规则回调:

function _check_select_yes_or_no($str)
{
    if ($str != 'yes' && $str != 'no')
    {
        $this->form_validation->set_message('_check_select_yes_or_no', 'Please select yes or no for the %s field');
        return FALSE;
    }
    else
    {
        return TRUE;
    }
}

这适用于“是”或“否”选项 - 如果您想添加更多调整回调,或者如果用户选择“请选择”则反转检查以失败。

或者,一种更好的方法可能是使用单选按钮来表示“是”和“否”,而不是在表单加载时“选中”。

<fieldset><legend> Hosting required:</legend>
    <label><input type="radio" name="hostingRequired" value="yes">Yes</label><br />
    <label><input type="radio" name="hostingRequired" value="no">No</label>
</fieldset>
于 2012-04-06T08:03:45.233 回答
0

如果您没有找到您想要的验证规则,请扩展验证库并编写您自己的规则。看例子如何做到这一点。

于 2012-04-06T05:50:06.783 回答
0

这样做的正确方法如下:

  • 首先将默认选项的值设置为空
  • 其次,您使用简单的验证规则

所以这里是代码

<label for="hostingRequired">Hosting Required:</label>
    <select name="hostingRequired">
        <option value=""> Please Select</option>
            <option value="yes">Yes</option>
            <option value="no">No</option>
        </select>
<label for="domainRequired">Domain Registration: </label>
            <select name="domainRequired">
                <option value="">Please Select</option>
                <option value="yes">Yes</option>
                <option value="no">No</option>
            </select>
<div id="domainToBeReged">
            <label for="domainToBeReged">Domain:</label><input name="domainToBeReged" type="text" placeholder="http://www." />
            <label for="domainToBeReged0">Domain:</label><input name="domainToBeReged0" type="text" placeholder="http://www." />
</div>

.

$this->form_validation->set_rules('hostingRequired','HostingRequired','required');
$this->form_validation->set_rules('domainRequired','DomainRequired','required');
于 2015-12-10T10:45:00.297 回答