Salvar $filename no Banco de Dados (Cake 3.x)
Consegui realizar o upload de um arquivo (imagem) na pasta /img/upload quando se editar o perfil, mas preciso fazer com que salve a variável $filename no banco de dados. Só preciso fazer com que retorne o nome do arquivo ao controller ou model e salve, mesmo que em um before filter, seja na function add ou edit.
Estou usando o CakePHP 3 com MySQL, e o campo é "Users.thumb".
Toda ajuda é bem-vinda, pois estou saindo do cake 2 e migrando para o 3. Obrigado!
UsersController
public function edit($id = null) {
$this->set('title', 'Editar Usuário');
$user = $this->Users->get($id, [
'contain' => []
]);
if ($this->request->is(['patch', 'post', 'put'])) {
$user = $this->Users->patchEntity($user, $this->request->getData());
if($this->request->data['thumb']) {
$this->Upload->send($this->request->data['thumb']);
}
if ($this->Users->save($user)) {
$this->Flash->success(__('The user has been saved.'));
return $this->redirect(['action' => 'index']);
}
$this->Flash->error(__('The user could not be saved. Please, try again.'));
}
$roles = $this->Users->Roles->find('list', ['limit' => 200]);
$this->set(compact('user', 'roles'));
$this->set('_serialize', ['user']);
}
UploadComponent
public function send( $data = null ) {
$filename = $data['name'];
$file_tmp_name = $data['tmp_name'];
$dir = WWW_ROOT.'img'.DS.'uploads';
$allowed = ['.png', '.jpg', '.jpeg', '.bmp'];
if($this->request->session()) {
$user = $this->request->session()->read('Auth.User.id');
} else {
$user = 0;
}
if ( !in_array( strrchr($filename, '.'), $allowed ) ) {
throw new InternalErrorException("Extensão de arquivo não permitido", 1);
} else if( is_uploaded_file($file_tmp_name) ) {
$filename = date('Ymd-Hi').'-'.$user.'-'.md5($filename.$file_tmp_name).'.jpg';
move_uploaded_file($file_tmp_name, $dir.DS.$filename);
return $filename;
}
}
Resolução:
No "UsersController", alterei um trecho para:
if($this->request->data['thumb']) {
$thumb = $this->Upload->send($this->request->data['thumb']);
$user['thumb'] = $thumb;
}Discussão (1)
Carregando comentários...