Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eu tenho uma view "add" que é um formulário de abertura de chamado help desk (referente a função add, claro), e tenho essa função "upload" que é para anexar arquivo a solicitação, que esta ligado com um component, mas eu nao quero deixa-los em view diferentes, pois se eu simplesmente enviar uma arquivo através da view "upload", a imagem "se perde" e não liga com ao chamado. Eu preciso que dentro da função "add" eu consiga chamar a função "upload", pra juntar as views. Se eu chama-la através de $this->upload(); não encontra o component, acredito que o conflito esteja no "request->data", mas nao sei existe uma forma de juntar da maneira que eu expliquei.
public function add()
{
$post = $this->Posts->newEntity();
if ($this->request->is(['post', 'put'])) {
$this->Posts->patchEntity($post, $this->request->data);
$post->user_id = $this->Auth->user('id');
if ($this->Posts->save($post)) {
$this->Flash->success(__('Chamado enviado '));
return $this->redirect(['action' => 'listar']);
}
$this->Flash->error(__('Chamado nao enviado'));
}
$this->set(compact('post'));
}
public function upload()
{
if ( !empty( $this->request->data ) ) {
$this->Upload->send($this->request->data(['uploadfile']));
return $this->redirect(['action'=>'add']);
}
}
Component:
public function send( $data )
{
if ( !empty( $data) ) {
if ( count( $data) > $this->max_files ) {
throw new InternalErrorException("Error Processing Request. Max number files accepted is {$this->max_files}", 1);
}
foreach ($data as $file) {
$filename = $file['name'];
$file_tmp_name = $file['tmp_name'];
$dir = WWW_ROOT.'img'.DS.'Anexos';
$allowed = array('png', 'jpg', 'jpeg');
if ( !in_array( substr( strrchr( $filename , '.') , 1 ) , $allowed) ) {
throw new InternalErrorException("Error Processing Request.", 1);
}elseif( is_uploaded_file( $file_tmp_name ) ){
$filename = Text::uuid().'-'.$filename;
$filedb = TableRegistry::get('Arquivos');
$entity = $filedb->newEntity();
$entity->filename = $filename;
$filedb->save($entity);
move_uploaded_file($file_tmp_name, $dir.DS.$filename);
}
}
}
}
}Carregando comentários...