2

我们有一个包含一些可选值的表单,这些值包含在下拉列表中。当新用户打开表单时,下拉列表中的默认值应为“-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-"));

谢谢

4

4 回答 4

3

HTML 不像 PHP 那样支持“空”值,因为它是一种标记语言 (XML),而不是像 PHP 这样的编程语言。

因此,您不能给它一个 NULL 值。最接近它的方法是在 PHP 中查找“NULL”值并将其值设置为 NULL,或者简单地允许选项的值为空白,在 PHP 中将空白评估为 NULL。

于 2012-12-14T17:25:39.427 回答
2
  1. 将“选择”作为列表中的一项选择
  2. 将 select 的值设为“”(即无值),例如: ( '' => 'Select' )
  3. 在表单上运行表单验证(无论如何你都应该这样做)。将下拉列表设为“必需”
  4. 如果用户没有选择任何东西,表单验证就会失败,因为他们没有“选择”一些东西。
于 2012-12-14T17:23:54.193 回答
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;
    }
 }
于 2012-12-14T19:26:58.267 回答
0

所以我是公司的 CEO,而我的 CTO 今天不在(现在公司里只有我们两个人,所以我尽可能地尝试编码),这就是我问这个问题的原因。然而结果他进来了,我们看了答案,都非常感谢!通过我们的控制器设置方式,我们找到了一个稍微不同的解决方案。

在我们添加的视图文件中:

array_unshift($pricing_profiles, "-select-");

在控制器中,我们创建了一个名为 $companies_profiles_data 的数组,它包含多个值,其中之一是 price_profile_id。我们在设置值的行中添加了一个三元运算符。

'pricing_profile_id' => (strcmp($this-> input-> post('pricing_profile_id'),'0')==0) 
? NULL : $this-> input-> post('pricing_profile_id'),
于 2012-12-14T20:48:14.287 回答