Cita: Yo lo que entiendo es que tengo que crear dos servicios ¿no? Uno para `upload_destination` y otro `directory_namer`.
No trabajo con ese bundle pero tratare de darte la idea.
upload_destination es tu directorio base donde estarán todos los archivos
directory_namer es un directorio que se crea dentro de upload_destination
Lo primero según la documentación es que definas una clase que implemente la interfaz: Vich\UploaderBundle\Naming\DirectoryNamerInterface
Código PHP:
Ver originaluse Vich\UploaderBundle\Naming\DirectoryNamerInterface;
class PostDirectory implements DirectoryNamerInterface {
public function directoryName($object, PropertyMapping $mapping){
return $object->id();
}
}
Procura hacer un var_dump de object para ver si contiene lo que necesitas.
La clase la creas en un directorio dentro de tu bundle generalmente es el direcotrio Model (lo tienes que crear).
En el directorio /Resource/Config esta un archivo llamado service.xml donde defines el servicio que symfony va a crear
Código XML:
Ver original<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<service id="proyecto.post_directory" class="Tu\ProyectoBundle\Model\PostDirectory" />
</services>
</container>
Para que symfony sepa donde esta declarado el servicio tienes que "importar" la configuración al archivo que esta en app/config/config.yml agregando la siguiente linea
Código yml:
Ver originalimports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
- { resource: "@TuProyectoBundle/Resources/config/services.yml"}
Finalmente cambias la configuración para que tu VichUploader haga su trabajo:
Código yml:
Ver originalvich_uploader:
# ...
mappings:
product_image:
upload_destination: directorio_base
directory_namer: proyecto.post_directory #el nombre que le diste a tu servicio
Espero que esto te oriente un poco en lo que requieres