Buenas tardes,
Quería hacerles una consulta acerca de cómo se podría editar un parámetro de configuración desde un formulario. Es decir, tengo que definir un parámetro de aplicación que almacene la ruta en la que guardar unas imágenes. En principio quería hacerla editable.
El tema es que no sé cómo se realiza esta tarea, ya que al final tendría que sobreescibir los valores del fichero de configuración. En principio, si no en equivoco, en Symfony2 no tiene sentido hacer una tabla en base de datos para almacenar esta configuración específica de la aplicación.
Muchas gracias.
Saludos.
Respuestas
En mi opinión, la idea que planteas es la forma correcta de hacerlo. Para simplificar la gestión de este parámetro, te aconsejo que crees un archivo de configuración sólo para ese parámetro. El formato da igual (XML, YAML, etc. lo que uses en el resto de archivos), pero define solo ese parámetro. Ejemplo para YAML:
# app/config/dynamic_parameters.yml parameters: images_path: '...'
Y después carga ese archivo desde el archivo principal de configuración:
# app/config/config.yml imports: - { resource: parameters.yml } ... - { resource: dynamic_parameters.yml }
Ahora ya solo queda que crees la funcionalidad que "machaca" ese archivo cada vez que el usuario configura su valor. Con Yaml::dump()
no te costará nada hacerlo.
@javiereguiluz
Muchas gracias.
Probaré lo que me comentas y os diré el resultado. No conocía Yaml::dump()
.
Un saludo
@jesusjbm
Muchas gracias Javier.
Ha funcionado correctamente. Dejo el código por si le interesase a alguien.
LEER FICHERO YAML
$request = new MSG\ObtenerConfiguracionRequest(); $request->setFichero($this->get('kernel')->getRootDir() .'/config/dynamic_parameters.yml'); $this->get('utils.adm')->ObtenerConfiguracion($request); [...] public function ObtenerConfiguracion(MSG\ObtenerConfiguracionRequest $request) { try { $yaml = new Parser(); $config = $yaml->parse(file_get_contents($request->getFichero())); var_dump($config); } catch (ParseException $e) { print_r($e->getMessage()); } }
ESCRIBIR FICHERO YAML
$request = new MSG\GuardarConfiguracionRequest(); $request->setFichero($this->get('kernel')->getRootDir() .'/config/dynamic_parameters.yml'); $request->setValores(array( 'parameters' => array('image_path' => '//ruta/a_guardar') )); [...] public function GuardarConfiguracion(MSG\GuardarConfiguracionRequest $request) { $dumper = new Dumper(); $yaml = $dumper->dump($request->getValores(), 2); file_put_contents($request->getFichero(), $yaml); }
Saludos.
@jesusjbm
Si tuvieras que configurar muchos parámetros, entonces quizás si que te compensa guardarlos en la base de datos. Además, ya existe un bundle llamado CraueConfigBundle que lo gestiona por ti.
@javiereguiluz
Este proyecto concretamente espero que no tenga demasiados parámetros configurables, pero muchas gracias por la información del bundle, creo que puede ser de gran ayuda para otros proyectos.
Un saludo.
@jesusjbm