我的页面用PHP / codeigniter编码,我有一个表格,里面有一些复选框。当我选择几个复选框并提交表单时,我将复选框值传递给控制器,控制器然后决定是否选中复选框,将所有选中的复选框值拆分为数组并使用uri-> assoc_to_uri传递给URL( $阵列)。这就是我为搜索引擎编写过滤器的方式(更好的方法吗?)。现在,当我再次使用复选框重新显示表单时,我希望再次检查先前选中的复选框。我怎么能这样做?
我最初的想法是做一个uri_> uri_to_assoc(#),找到相关键的值(即1.2.3),然后爆炸到数组$ arr,类似下面的代码:
<input type="checkbox" name="price_range_4" value="<?php if($arr[4] != '') echo 'selected'; ?>">
有更快/更好的方法吗?
答案 0 :(得分:2)
为什么不使用Session Class并将数组传递给set_flashdata(),然后在搜索结果页面上检索它以检查复选框?
答案 1 :(得分:1)
除了Darren's answer之外,还有另一个HTML问题:
<input type="checkbox" name="price_range_4" value="<?php if($arr[4] != '') echo 'selected'; ?>">
这不是您想要更改的value
,而是checked
属性。像这样:
<input type="checkbox" name="price_range_4" value="my_value"<?php if ($should_be_checked) echo ' checked="checked"'; ?> />
如果您使用的是Form helper,则可以使用form_checkbox()
功能使其更清洁:
示例:
echo form_checkbox('price_range_4', 'my_value', $should_be_checked);
当然$should_be_checked
将是您决定使用会话数据,$ _POST数据或其他方式来定义它的任何方式。