Agregar un elemento a un array multidimensional del objeto sfParameterHolder

1,071 views
Skip to first unread message

adrianrz

unread,
Jul 21, 2009, 11:48:00 AM7/21/09
to Grupo Desarrollo Symfony - La Plata
Hola amigos,

Tengo el objeto
sfParameterHolder Object
(
[parameters:protected] => Array
(
[actividad] => Array
(
[id] =>
[menu] => on
[es] => Array
(
[nombre] => Resistencias de Carbón
)


[en] => Array
(
[nombre] => Carbon Resistor
)


)


[module] => actividad
[action] => create
[sf_format] => html
)


)


y quisiera agregarle un elemento slug por cada idioma preprocesado
antes de guardarlo en la bbdd, es decir


sfParameterHolder Object
(
[parameters:protected] => Array
(
[actividad] => Array
(
[id] =>
[menu] => on
[es] => Array
(
[nombre] => Resistencias de Carbón
[slug] => resistencias_de_carbon
)


[en] => Array
(
[nombre] => Carbon Resistor
[slug] => carbon_resistor
)


)


[module] => actividad
[action] => create
[sf_format] => html
)


)


Como puedo ingresar estos valores al objeto?


Gracias de antemano

Alex

unread,
Jul 21, 2009, 12:16:03 PM7/21/09
to grupo-desarr...@googlegroups.com
Yo creo que podrías probar con http://ar.php.net/manual/en/function.array-merge-recursive.php, debería funcionar.

Saludos,
   Alex

2009/7/21 adrianrz <adrian...@hotmail.com>

adrianrz

unread,
Jul 21, 2009, 1:21:34 PM7/21/09
to Grupo Desarrollo Symfony - La Plata
Hola Alex,

gracias por tu respuesta, pero creo que se necesita el método accesor
para el holder

he probado con $request->getParameterHolder()->set('slug','loquesea');
pero me inserta el elemento a nivel de [actividad], o sea

sfParameterHolder Object
(
[parameters:protected] => Array
(
[actividad] => Array
(
[id] =>
[menu] => on
[es] => Array
(
[nombre] => Resistencias de Carbón
)


[en] => Array
(
[nombre] => Carbon Resistor
)


)


[module] => actividad
[action] => create
[sf_format] => html
[slug] => loquesea
)


)

Lo que intento hacer con esto es generar con una función el valor de
un slug por idioma y al que no muestro en el form con embedi18n (ya
que previamente le hice el unset['slug'] de cada idioma) luego el
objeto request quedáría listo para el save a la bbdd.

No se me ocurre de otra forma, si existe otra bienvenida sea.

Saludos.

Adrián


On Jul 21, 6:16 pm, Alex <alexsi...@gmail.com> wrote:
> Yo creo que podrías probar conhttp://ar.php.net/manual/en/function.array-merge-recursive.php, debería
> funcionar.
>
> Saludos,
>    Alex
>
> 2009/7/21 adrianrz <adrianrz2...@hotmail.com>
> > Gracias de antemano- Hide quoted text -
>
> - Show quoted text -

Alex

unread,
Jul 21, 2009, 9:47:16 PM7/21/09
to grupo-desarr...@googlegroups.com
Es verdad! Como dijiste array multidimensional, no noté que era un objeto el que estabas mostrando.
Yo te diría que hagas:

$actividad = $request->getParameterHolder()->get('actividad');
$actividad["es"]["slug"]="loquesea";
$request->getParameterHolder()->set('actividad', $actividad);

O directamente

$actividad =& $request->getParameterHolder()->get('actividad');
$actividad["es"]["slug"]="loquesea";

Saludos,
   Alex

2009/7/21 adrianrz <adrian...@hotmail.com>

adrianrz

unread,
Jul 22, 2009, 2:04:12 PM7/22/09
to Grupo Desarrollo Symfony - La Plata
Hola Alex,

Tu solución setea pero no agrega elementos, para quien tenga un
problemita similar pongo la solución que adopté usando un mix de tu
primer post con el metodo add de la clase sfRequest

$arr_fuente = $request->getParameterHolder()->get('actividad');
$valor_a_agregar = 'loquesea'; //acá va la función que convierte a
slug el parametro 'nombre'
$arr_slug = array('es'=>array('slug'=>$valor_a_agregar));
$arr_final = array('actividad'=>array_merge_recursive($arr_fuente,
$arr_slug));
$request->getParameterHolder()->add($arr_final);

Gracias por tu colaboración, saludos

Adrián

Alex

unread,
Jul 22, 2009, 7:46:50 PM7/22/09
to grupo-desarr...@googlegroups.com
Adrían,
   fijate que lo que mandaste funciona, pero lo que yo mandé también, ya que en lugar de mergear 2 arrays, simplemente ubico el valor en la posición del array original que me interesa.

Saludos,
   Alex

2009/7/22 adrianrz <adrian...@hotmail.com>

adrianrz

unread,
Jul 23, 2009, 12:33:51 PM7/23/09
to Grupo Desarrollo Symfony - La Plata
Alex, ayer fue un día de esos... tenés razón, hace lo mismo y más
simple, igualmente no lo probé (porque cambié todo el concepto de lo
que estaba haciendo), y sabrás que con symfony hasta que no te ponés a
ver bien cada método q no está muy explicado, no se sabe para donde va
a salir.

Igual estoy conforme con este framework es muy actualizado, mucho
mejor documentado para dummies como yo y por ej. ahora estoy
trabajando un admin multilenguaje y con un contenedor del template que
te agrega unos menues (el plugin adminDash) y salvo algunos bugs q
encontré y publiqué en otra lista, anda todo con muy poco retoque de
código.

Saludos.

Adrián

On 23 jul, 01:46, Alex <alexsi...@gmail.com> wrote:
> Adrían,
>    fijate que lo que mandaste funciona, pero lo que yo mandé también, ya que
> en lugar de mergear 2 arrays, simplemente ubico el valor en la posición del
> array original que me interesa.
>
> Saludos,
>    Alex
>
> 2009/7/22 adrianrz <adrianrz2...@hotmail.com>
>
>
>
>
>
> > Hola Alex,
>
> > Tu solución setea pero no agrega elementos, para quien tenga un
> > problemita similar pongo la solución que adopté usando un mix de tu
> > primer post con el metodo add de la clase sfRequest
>
> > $arr_fuente = $request->getParameterHolder()->get('actividad');
> > $valor_a_agregar = 'loquesea'; //acá va la función que convierte a
> > slug el parametro 'nombre'
> > $arr_slug = array('es'=>array('slug'=>$valor_a_agregar));
> > $arr_final = array('actividad'=>array_merge_recursive($arr_fuente,
> > $arr_slug));
> > $request->getParameterHolder()->add($arr_final);
>
> > Gracias por tu colaboración, saludos
>
> > Adrián- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -
Reply all
Reply to author
Forward
0 new messages