Conheça  A Ferramenta LowCode mais moderna e veloz para desenvolvimento PHP: Adianti Creator
Validação de campo TFile Como faço para validar um campo TFile para impedir que o arquivo fique setado no campo caso não satisfaça as condições de ser jpg ou pdf e por tamanho?...
HT
Validação de campo TFile  
Fechado
Como faço para validar um campo TFile para impedir que o arquivo fique setado no campo caso não satisfaça as condições de ser jpg ou pdf e por tamanho?

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (14)


NR

É possível definir o service responsável pelo tratamento do arquivo pelo método setService da TFile. Por padrão é utilizada a classe AdiantiUploaderService, mas você pode criar sua própria classe de tratamento e adicionar as verificações necessárias.
HT

Como utilizo esse setService?
NR

 
  1. <?php
  2. //form
  3. $file = new TFile('file');
  4. $file->setService('suaClasse');
  5. //suaClasse.php
  6. function show()
  7. {
  8. ...
  9. }
  10. ?>

Pode se basear na classe AdiantiUploaderService e copiar o método show dela, fazendo os ajustes necessários
HT

Não consegui utilizar, quando crio a classe e seto no setService não gera nem um erro, mais também não faz o upload da imagem, mesmo sem alterar nada.
NR

Verifique o arquivo engine.php, deve ser necessário adicionar a sua classe na seguinte linha:
 
  1. <?php
  2. $programs = array_merge($programs, array('Adianti\Base\TStandardSeek' => TRUE, 'LoginForm' => TRUE, 'AdiantiAutocompleteService'=> true, 'AdiantiMultiSearchService' => TRUE, 'AdiantiUploaderService' => TRUE, 'EmptyPage' => TRUE, 'MessageList'=>TRUE, 'SearchBox' => TRUE)); // default programs
  3. ?>
HT

Ainda continua rodando.

onde adiciono em uma datagrid
 
  1. <?php
  2. $item->anexo = new TFile('anexo'.$object->id);
  3. $item->anexo->setService('UploadFileService');
  4. engine.php
  5. $programs = array_merge($programs, array('Adianti\\Base\\TStandardSeek' => TRUE, 'LoginForm' => TRUE, 'AdiantiMultiSearchService' => TRUE, 'AdiantiUploaderService' => TRUE, 'EmptyPage' => TRUE, 'MessageList'=>TRUE, 'SearchBox' => TRUE, 'UploadFileService' => TRUE)); // default programs
  6. ?>

minha classe esta igual a do AdiantiUploaderService o método show.
HT

A classe UploadFileService esta com o mesma função show, ainda não foi alterado nada.
HT

agora consegui... vlw, muito obrigado, vou fazer as alterações para ver se da certo..
HT

Nataniel Rabaioli: qualquer condição que eu coloque, o icone fica só rodando e não gera a mensagem que defino no IF, nem faz o upload.
NR

Herbert, deve ser por causa do namespace da classe que você copiou. Exclua o seguinte trecho da sua classe de upload:
 
  1. <?php
  2. namespace Adianti\\Service;
  3. ?>
HT

Já tinha removido essa linha. Já estou vendo outra forma. Com a opção onComplete, dentro dele eu faço a verificação, mais quando não satisfazer eu queria que o campo de anexo ficasse em branco, já que valido e não o salvo, mais o campo ainda fica com o icone e o nome do arquivo no campo TFile.
LC

Eu não consigo fazer outra classe funcionar, simplesmente eu copiei a classe AdiantiUploaderService para TesteUploaderService , inclui TesteUploaderService dentro do engine , e não mudei nada, alterei o setService('TesteUploaderService ') , só que fica rodando e nada de completar.

Mais eu consegui fazer alterações direto na classe AdiantiUploaderService que já vai resolver alguma coisa pra mim.
PD

Evitem realizar alterações em qualquer classe em /lib, as atualizações quebrarão seu código, ou vcs ficarão presos em uma versão específica do framework, sem acesso inclusive à correções de bugs.
LC

Pablo esta resposta sua eu já sabia e acho que muita gente que usa o frame também sabe que não devemos alterar nada nesta pasta.
Fiz uma copia da classe original, fiz uma anotação no projeto que estou usando para quando houver atualização eu revalidar essa situação.
Tentei de varias formas usar uma outra classe e não obtive sucesso. Inclusive te enviei até um e-mail.