0
I am using the Codeigniter File Upload Class in a form to send a photo, but by default the field is required, I wonder if there is how and if you have how to change the rule, because there will not always be image to be sent in this form.
View:
<?= form_open_multipart('filmes/cadastro') ?>
<input type="hidden" name="id_user" value="<?= $id_user?>" />
<div class="form-group col-lg-12">
<label for="userfile">Poster</label><span class="erro"><?php echo form_error('userfile') ? : ''; ?></span>
<input type="file" name="userfile" id="userfile" class="form-control" value="<?= set_value('userfile') ? : (isset($userfile) ? $userfile : '') ?>" autofocus='true' />
</div>
<?= form_close(); ?>
Controller
$config['upload_path'] = './include/img/poster';
$config['allowed_types'] = 'jpg|png';
$config['max_size'] = '0';
$config['max_width'] = '0';
$config['max_height'] = '0';
$config['file_name'] = $slug_titulo;
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload()){ //tentei alterar essa classe, mas não obtive exito
$variaveis['generos'] = $this->m_generos->generos();
$variaveis['nacionalidades'] = $this->m_nacionalidades->nacionalidadesFull();
$variaveis['mensagem'] = $this->upload->display_errors();
$this->load->view('v_filme_cadastro', $variaveis);
}
else{
$pfoto = $this->upload->data();
$foto = $pfoto['file_name'];
$filme = $this->m_filme->store($foto, $titulo_original, $titulo_traduzido, $slug_titulo, $data_lancamento, $duracao, $classificacao, $status, $orcamento, $faturamento, $sinopse, $generos, $nacionalidades, $id_user, $dt_criacao);
redirect(base_url("cadastros/filme/{$filme}"));
}
Model:
public function store($foto, $titulo_original, $titulo_traduzido, $slug_titulo, $data_lancamento, $duracao, $classificacao, $status, $orcamento, $faturamento, $sinopse, $generos, $nacionalidades, $id_user, $dt_criacao) {
$this->db->query("INSERT INTO obras
(poster, titulo_original, titulo_traduzido, slug_titulo, data_lancamento, duracao, classificacao, status, sinopse, midia, id_usuario, dt_criacao)
VALUES('{$foto}','{$titulo_original}','{$titulo_traduzido}','{$slug_titulo}','{$data_lancamento}','{$duracao}','{$classificacao}','{$status}','{$sinopse}', 'filme', '{$id_user}','{$dt_criacao}')");
$id_obras = $this->db->insert_id();
$this->db->query("INSERT INTO filmes
(id_obras, orcamento, faturamento)
VALUES('{$id_obras}','{$orcamento}','{$faturamento}')");
foreach ($generos as $genero){
$this->db->query("INSERT INTO obras_generos
(id_obras, id_generos)
VALUES('{$id_obras}','{$genero}')");
}
foreach ($nacionalidades as $nacionalidade){
$this->db->query("INSERT INTO paises_obras
(id_obras, id_paises)
VALUES('{$id_obras}','{$nacionalidade}')");
}
return $id_obras;
}
Put the validation code (php) or the form
– rray
Put the code that creates the field and validates this upload field.
– Marcelo Diniz
@rray codes inserted in the post
– Rafael Gonçalves