为什么CodeIgniter不将某些变量作为form_dropdown()的第三个参数?

时间:2015-06-03 06:36:19

标签: php codeigniter

我的表单设置为在第一次加载时从数据库(我通过模板引擎传递)加载值,如果验证失败则从后续加载的POSTed值加载。例如,像这样的事情很好:

 $title = array(
              'name'        => 'aboutme',
              'id'          => 'aboutme',
              'value'       => set_value('aboutme','{about_me}'),
              'rows'        => '20',
              'cols'        => '64'
            );

但我在form_dropdown上磕磕绊绊。

$ethnicity_array = array('Please choose', 'Asian', 'Black', 'Hispanic / Latin',  'Native American', 'Pacific Islander', 'Southeast Asian', 'White', 'Mixed', 'Other');

echo form_dropdown('ethnicity', $ethnicity_array,set_value('ethnicity','{ethnicity}'));

它不会生成HTML以将选项标记为已选择。

即使失败了:

$var = set_value('ethnicity','{ethnicity}');

echo $var;     // verify that it has the expected value, let's say 7

echo form_dropdown('ethnicity', $ethnicity_array,$var);

这也失败了 - 也就是说,它没有生成正确的HTML来将相应的选项标记为选中:

echo form_dropdown('ethnicity',$ethnicity_array,(isset($_POST['ethnicity']) ? $_POST['ethnicity'] : $var));

但是,这有效:

echo form_dropdown('ethnicity', $ethnicity_array,7);

而且:

$var = 7;

echo form_dropdown('ethnicity', $ethnicity_array,$var);

这似乎是某种类型转换问题,所以也许这只是我从根本上不了解PHP的东西。

更新:它可能是一个类型转换问题。试试这个:

$var = "{ethnicity}";

echo var_dump($var);

$iv = intval($var);

echo "<div>IV:</div>";

echo var_dump($iv);

收率:

string(15)“7” 四: INT(0)

我不知道为什么intval()为字符串“7”返回0。我在stackoverflow上看了一下关于intval()的其他问题,现在我更加困惑了。但是如果form_dropdown也在尝试进行int转换并且它失败了,那可能就是问题了。

1 个答案:

答案 0 :(得分:0)

你必须传递set_value作为第三个参数 你的代码应该是这样的

echo form_dropdown('ethnicity', $ethnicity_array, set_value('ethnicity'));