En el post anterior hemos visto como crear el formulario de añadir posts, sin embargo no funciona la subida de la imágen. En este artículo veremos como subir ficheros en Symfony2.
Es sencillo, simplemente en nuestro formulario definimos un campo tipo file y en la entidad añadimos los siguientes métodos.
//SUBIDAS public function getAbsolutePath() { return null === $this->image ? null : $this->getUploadRootDir() . '/' . $this->image; } public function getWebPath() { return null === $this->image ? null : $this->getUploadDir() . '/' . $this->image; } public function getUploadRootDir() { return __DIR__ . '/../../../../web/' . $this->getUploadDir(); } protected function getUploadDir() { return 'uploads'; } public function upload() { if (null === $this->getImage()) { return; } $this->getImage()->move( $this->getUploadRootDir(), $this->getImage()->getClientOriginalName() ); $this->image = $this->getImage()->getClientOriginalName(); $this->file = null; } public function removeUpload() { if ($file = $this->getAbsolutePath()) { unlink($file); } }
Con estos métodos Symfony2 se encargará de guardar la imagen en el directorio web/uploads como le hemos indicado. El solo hará la magia, solamente tendremos que llamar al método upload antes de el persist de la entidad.