1

私のコントローラーの1つに、次のコードがあります。ここでは、別のモデルのビュー(フォーム付き)をロードし、そこにデータを渡します。

$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');
}
}

私の質問が明確だったことを願っています。

4

1 に答える 1

4

これには set_value メソッドを使用できます。これがドキュメントです。

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

2 番目のパラメーターはデフォルト値で、最初のパラメーターはフィールドの名前です。検証が失敗した場合、最初のパラメーターは値を探します (見つかった場合) 表示されない場合は、デフォルト値を取得します。
また、検証が失敗した場合は、ビューをロードするだけですべての行を配置する必要があります。

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);
于 2013-01-21T14:00:49.507 に答える