我在 Codeigniter 中遇到redirect()
的问题。
我的控制器是:
public function cadastraCliente(){
$this->form_validation->set_rules('cliente', 'Cliente', 'trim|required|is_unique[cliente.id_pessoa]');
$this->form_validation->set_rules('tipo_cliente', 'Tipo Cliente', 'trim|required');
$this->form_validation->set_rules('obs', 'Observação', 'trim');
$this->form_validation->set_message('required', 'O campo <b>%s</b> é obrigatório!');
$this->form_validation->set_message('is_unique', 'Já existe um <b>%s</b> cadastrado!');
if ($this->form_validation->run() == FALSE) {
$flashdata = array('alert_type' => 'error','message' => '<b>Erro</b> ao cadastrar Cliente!');
$this->session->set_flashdata($flashdata);
$this->cliente();
}else{
$this->load->model('Cadastro_Model','cadastro');
$cliente = $this->input->post();
if($this->cadastro->setCliente($cliente))
$flashdata = array('alert_type' => 'success','message' => '<b>Cliente</b> cadastrado com sucesso!');
else
$flashdata = array('alert_type' => 'error','message' => '<b>Erro</b> ao cadastrar cliente tente novamente!');
$this->session->set_flashdata($flashdata);
$this->cliente();
}
如果我使用重定向('cliente')代替$this->cliente();
,则表单中的set_value不会重新填充。
否则,如果我使用$this->cliente();
,则在我更改页面时会出现flashdata。
有人知道为什么会这样吗?
答案 0 :(得分:0)
我认为您最好在表单验证返回$this->cliente();
时使用false
因为您要在表单中显示验证错误,当然您不能使用{{1}执行此操作}。
当没有出现验证错误时使用redirect()
。然后,您的redirect()
将显示在下一个视图中。请记住,为了显示flashdata
,您需要使用flashdata
。