不要使用重定向重新填充,而flashdata不能与$ this->方法CodeIgniter一起使用

时间:2014-04-16 19:52:28

标签: php codeigniter redirect

我在 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。

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

我认为您最好在表单验证返回$this->cliente();时使用false因为您要在表单中显示验证错误,当然您不能使用{{1}执行此操作}。

当没有出现验证错误时使用redirect()。然后,您的redirect()将显示在下一个视图中。请记住,为了显示flashdata,您需要使用flashdata