Re-populate input file type after codigniter validation error

Asked

Viewed 24 times

0

I needed that whenever there was a validation error, when returning to the form the file fields were with the previously completed information, however I’m not getting it to happen, I tried with the value="<?php echo set_value(''); ?>" but it didn’t work.

Follow my html file input code:

<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>

Just 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();
}
  • How is the form opening?

  • <?php echo form_open_multipart('submissive/buy'); ?>

  • The tbm closure is using the CI helper?

  • Yes I am using the helper to close the form. I have been searching and apparently, for reasons, security is not possible :/

1 answer

0

When you get field validation error, change the page load $this->load->view('welcome_message', $data); for redirect('ROTA_PARA_CARREGAR_A_PAGINA'). Being that you must put the values already informed in flash_data to get them on the page. Follow 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')
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.