验证字段后,表单中传递的codeigniter数据将丢失

时间:2013-01-21 13:57:37

标签: php codeigniter

在我的一个控制器中,我有以下代码,我在其中加载不同模型的视图(带有表单)并将一些数据传递到那里。

$data['teste1']=$this->fichas_model->set_fichas();
$data['teste'] = $this->fichas_model->get_distribuidor();
$this->load->view('templates/header');
$this->load->view('aquitex/criar_ficha');

在上面提到的视图中,我然后呈现如下传递的数据:

<input type="input" name="id_ficha" value="<?php echo $teste1['id_ficha'];?>" />
<input type="input" name="nome_empresa" value="<?php echo $teste['nome_empresa'];?>" />
<input type="input" name="morada" value="<?php echo $teste['morada'];?>" />

这没有问题。问题在于我在此表单中的验证字段。如果调用了一些验证(因为我将某些字段留空),我丢失了通过$ data ['teste1'] e $ data ['teste']数组传递的数据,并获得了输入上写的html代码。

这里是处理视图的控制器的代码:

public function criar_ficha()
{

$this->load->helper('form');
$this->load->library('form_validation');

$this->form_validation->set_rules('nome_produto', 'Nome do Produto', 'required');
$this->form_validation->set_rules('morada', 'Morada', 'required');


if ($this->form_validation->run() === FALSE)
{   
    $this->load->view('aquitex/criar_ficha', $data);
}
else
{
    $this->aquitex_model->set_ficha();
    $this->load->view('aquitex/success');
}
}

希望我的问题很明确。

1 个答案:

答案 0 :(得分:4)

您可以使用set_value方法。 Here是文档。

<input type="input" name="id_ficha" value="<?php echo set_value('id_ficha',$teste1['id_ficha']);?>" />

第二个参数是默认值,第一个参数是字段名称。当validaton失败时,如果找到则第一个参数将查找值,否则显示为默认值 此外,当验证失败时,您应该将所有行仅加载视图不起作用

if ($this->form_validation->run() === FALSE)
{   
    $data['teste1']=$this->fichas_model->set_fichas();
    $data['teste'] = $this->fichas_model->get_distribuidor();
    $this->load->view('templates/header');
    $this->load->view('aquitex/criar_ficha');
}

另请注意,您未将$data传递给视图。它应该是

$this->load->view('aquitex/criar_ficha',$data);