我们有一个带有一些可选值的表单,这些值包含在下拉列表中。当新用户打开表单时,下拉列表中的默认值应为“-select-”。用户选择的值将发送到我们的数据库。这一切现在都可以正常工作,除了我们没有列出'-select-'作为第一个选项,默认是我们数据库中列出的第一个选项。
我正在尝试添加'-select-'但是当我提交表单并且仍然选择'-select-'时,我收到了数据库错误。
<div class="control-group">
<label class="control-label">Pricing Profile: </label>
<div class="controls">
<?php
echo form_dropdown('pricing_profile_id', $pricing_profiles,
$profile->pricing_profile_id,' class="span3" id="pricing_profile_id" ');
?>
</div>
</div>
我尝试在“echo form_dropdown”上面添加此文本,但它似乎不起作用:
array_unshift($pricing_profiles, array(0 => "-select-"));
由于
答案 0 :(得分:3)
HTML不像PHP那样支持“null”值,因为它是一种标记语言(XML),而不是像PHP这样的编程语言。
因此你不能给它一个NULL值。你最接近它的方法是在PHP中查找值“NULL”并将其值设置为NULL,或者只是允许选项的值为空,在PHP中将空白值评估为NULL。
答案 1 :(得分:1)
( '' => 'Select' )
答案 2 :(得分:1)
在您填充$ pricing_profiles的控制器中,在那里添加选择。例如,如果您将数据传递给$ data中的视图,它将如下所示:
$data['pricing_profiles'] = whatever you are doing to populate this array;
$data['pricing_profiles'][0] = '-select-';
然后在表单验证中执行回调函数
$this->form_validation->set_rules('pricing_profile_id','Pricing Profile',callback_checkPricingProfile);
function checkPricingProfile($pricing_profile_id)
{
if($pricing_profile_id==0)
{
return false;
}
}
答案 3 :(得分:0)
所以我是公司的首席执行官,我的CTO今天就出去了(现在只是我们公司的两个人,所以我尽可能尝试编码),这就是我提出这个问题的原因。然而结果他进来了,我们看了答案,非常感谢!通过我们的控制器设置方式,我们发现了一个略有不同的解决方案。
在视图文件中我们添加了:
array_unshift($pricing_profiles, "-select-");
在控制器中我们创建一个名为$ companies_profiles_data的数组,它包含几个值,其中一个是pricing_profile_id。我们在设置值的行中添加了一个三元运算符。
'pricing_profile_id' => (strcmp($this-> input-> post('pricing_profile_id'),'0')==0)
? NULL : $this-> input-> post('pricing_profile_id'),