Re-Populate file type inputs after validation error in codigniter

0

I needed that whenever there was a validation error, when returning to the form the file fields had the information previously filled, however I could not make it happen, I tried with value="<?php echo set_value(''); ?>" but it did not work.

Here is my html code for the file inputs:

<div class="form-group">                                                
    <div class="col-xs-6">
        <b>Documento de identificação (Carteira de Identidade / Passaporte)</b>
        <input type="file" class="form-control" name="fileIdentificacao" id="fileIdentificacao" value="<?php echo set_value('fileIdentificacao'); ?>" required>
    </div>
    <div class="col-xs-6"></div>
</div>
 <div class="form-group">                                               
    <div class="col-xs-6">
        <b>Diploma de conclusão do ensino médio</b>
        <input type="file" class="form-control" name="fileDiploma" id="fileDiploma" value="<?php echo set_value('fileDiploma'); ?>" required>
    </div>
    <div class="col-xs-6"></div>
</div>
<div class="form-group">                                                
    <div class="col-xs-6">
        <b>Documento com as classificações ENEM, nº de inscrição e CPF</b>
        <input type="file" class="form-control" name="fileEnem" id="fileEnem" value="<?php echo set_value('fileEnem'); ?>" required>
    </div>
    <div class="col-xs-6"></div>
</div>

Follow my controller:

$this->load->library('form_validation');
$this->form_validation->set_rules('txtnome', 'Nome Completo', 'trim|required|max_length[250]');
$this->form_validation->set_rules('radioGenero', 'Género', 'trim|required');
$this->form_validation->set_rules('txtDataNascimento', 'Data Nascimento', 'trim|required');
$this->form_validation->set_rules('selectNacionalidade', 'Nacionalidade', 'trim|required');
$this->form_validation->set_rules('selectIdentificacao', 'Tipo de Identificação', 'trim|required');
$this->form_validation->set_rules('txtNumero', 'Número de identificação', 'trim|required|max_length[25]');
$this->form_validation->set_rules('txtDataValidade', 'Validade do Doc. de Identificação', 'trim|required');
$this->form_validation->set_rules('txtRua', 'Morada', 'required|max_length[400]');
$this->form_validation->set_rules('txtLocalidade', 'Localidade', 'trim|required|max_length[90]');
$this->form_validation->set_rules('txtCodPostal', 'Código Postal', 'trim|required|max_length[10]');
$this->form_validation->set_rules('selectPais', 'País da morada', 'trim|required');
$this->form_validation->set_rules('txtIndicativo', 'Indicativo', 'trim|required|max_length[4]');
$this->form_validation->set_rules('txtTelefone', 'Número de telefone', 'trim|required|max_length[11]');
$this->form_validation->set_rules('txtEmail', 'Email', 'trim|required|matches[txtEmailR]|max_length[200]|valid_email');
$this->form_validation->set_rules('txtEmailR', 'Repetição do email', 'trim|required');
$this->form_validation->set_rules('txtMat', 'Nota de MAT', 'trim|required|greater_than[0]|less_than[20.01]');
$this->form_validation->set_rules('txtCNat', 'Nota de CNat', 'trim|required|greater_than[0]|less_than[20.01]');
$this->form_validation->set_rules('txtLing', 'Nota de Ling', 'trim|required|greater_than[0]|less_than[20.01]');
$this->form_validation->set_rules('txtRed', 'Nota de Red', 'trim|required|greater_than[0]|less_than[20.01]');
$this->form_validation->set_rules('selectCurso[0]', 'Primeira opção', 'trim|required');
$this->form_validation->set_rules('selectCurso[1]', 'Segunda opção', 'trim');
$this->form_validation->set_rules('selectCurso[2]', 'Terceira opção', 'trim');
$this->form_validation->set_rules('chkEnsinoMedio', 'Declaração Ensino médio', 'trim|required');
$this->form_validation->set_rules('chkNacionalidade', 'Declaração Nacionalidade', 'trim|required');
$this->form_validation->set_rules('chkResido', 'Declaração de Residência', 'trim|required');
//$this->form_validation->set_rules('fileIdentificacao', 'Comprovativo de idêntificação', 'trim|required');
//$this->form_validation->set_rules('fileDiploma', 'Diploma', 'trim|required');
//$this->form_validation->set_rules('fileEnem', 'Declaração com as classificações ENEM nº de inscrição e CPF', 'trim|required');


if ($this->form_validation->run() == FALSE)
{
    $data['lstPaises'] = $this->paises_model->listarPaises();
    $data['lstResidencia'] = $this->paises_model->listarResidencia();
    $data['cursos'] = $this->cursos_model->ListarCursos();      
    $this->load->view('welcome_message', $data);
    //$this->index();
}
    
asked by anonymous 03.02.2016 / 16:56

1 answer

0

When you get a field validation error, change the page load $this->load->view('welcome_message', $data); to redirect('ROTA_PARA_CARREGAR_A_PAGINA') . Being that you should put the already informed values in flash_data to get them on the page. Here's an example:

HTML

<?php
$valor1 = '';
if ($this->session->flashdata('fileIdentificacao') != false) {
    $valor1 = $this->session->flashdata('fileIdentificacao');
}
?>
<div class="form-group">                                                
    <div class="col-xs-6">
        <b>Documento de identificação (Carteira de Identidade / Passaporte)</b>
        <input type="file" class="form-control" name="fileIdentificacao" value="<?php echo $valor1; ?>" required>
    </div>
    <div class="col-xs-6"></div>
</div>

CONTROLLER

if ($this->form_validation->run() == FALSE) {
    $this->session->set_flashdata('fileIdentificacao', $this->input->post('fileIdentificacao'));

    redirect('ROTA_PARA_CARREGAR_A_PAGINA')
}
    
04.05.2016 / 06:44