我的表单设置为在第一次加载时从数据库(我通过模板引擎传递)加载值,如果验证失败则从后续加载的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转换并且它失败了,那可能就是问题了。
答案 0 :(得分:0)
你必须传递set_value
作为第三个参数
你的代码应该是这样的
echo form_dropdown('ethnicity', $ethnicity_array, set_value('ethnicity'));