Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Formulario para editar la configuración

7 de septiembre de 2015

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

#1

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

8 septiembre 2015, 22:24
#2

Muchas gracias.

Probaré lo que me comentas y os diré el resultado. No conocía Yaml::dump().

Un saludo

@jesusjbm

9 septiembre 2015, 10:48
#3

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

11 septiembre 2015, 18:09
#4

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

11 septiembre 2015, 19:28
#5

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

14 septiembre 2015, 12:00