0

我正在使用 CodeIgniter 1.7.1。好的,这是场景。提交表单时,我需要做两件事

1) 保留下拉列表中选择的值。2)使用session->set_flashdata(),我需要设置自定义数据库消息。

现在我们知道,在设置这个闪存数据之前,我们需要重定向。

这是我写的代码。

if ($this->form_validation->run() == TRUE){

    $this->session->set_flashdata(‘msg’, ‘Taha Hasan’); 
    redirect(current_url());

    $this->ShowReceiveInventoryView();
}

我也在下拉视图中使用 set_select 来保留值。

<select name=“myselect”&gt;
<option value=“one” <?php echo set_select(‘myselect’, ‘one’, TRUE); ?> >One</option>
<option value=“two” <?php echo set_select(‘myselect’, ‘two’); ?> >Two</option>
<option value=“three” <?php echo set_select(‘myselect’, ‘three’); ?> >Three</option>
</select>

现在问题来了……闪现消息出现但是因为我正在重定向到当前页面,下拉 set_select 值丢失了!!!默认值出现在选择中:(..如果我删除代码中的重定向行,下拉值是 presisted 但 Flash 数据未设置!!!

希望大家有办法解决这个问题……

4

1 回答 1

1

set_select()仅当$_POST数组有内容时才有效(如您所见),但您的重定向显然是一个 GET 请求。

处理此问题的正确方法是在 Controller 中执行查询,将正在编辑的对象传递给您的视图。然后在您的视图中重新填充您的表单,或设置默认值,基于$_POST它是否存在或基于传递的对象。

假设我们正在编辑一个产品,它具有myselect(一个可怕的命名字段)属性。我们将使用 PHP 的三元运算符来测试产品myselect参数的值是否等于当前值option- 如果是,我们将使用set_selects()的第三个参数设置默认值。

<option value="one" <?php echo set_select('myslect', 'one', ((!$product) || !$this->input->post('myselect') && $product->myselect == 'one' ? TRUE : FALSE); ?>One</option>

<option value="two" <?php echo set_select('myselect', 'two', (!$this->input->post('myselect') && $product->myselect == 'two' ? TRUE : FALSE); ?>Two</option>
于 2011-06-27T15:05:12.353 回答