Zend Framework addMultiOption agregando parámetros personalizados como "rel" para opciones

Estoy usando Zend y tenemos un formulario que se arma a través de una serie de funciones. Uno en particular addMultiOption, del cual se extrae de una base de datos (de donde no sé, porque si pudiera modificar la consulta, sería mucho más fácil y mejor en general. De todos modos, dicho esto, necesito agregar un "rel" atribuya a cada opción / opción para que pueda realizar una tarea en la opción a través de jquery cuando se selecciona esa opción, no son todas las opciones, pero algunas, las opciones que no tienen funcionalidad adicional tendrían un rel de 0 donde como las que tienen acciones tendrá un rel de "uno", esto proviene de la base de datos, así que estoy tratando de descubrir cómo puedo agregar atributos adicionales fuera del valor

Zend Framework es compatible con esto, si no, ¿cómo puedo lograrlo? Encontré lo que pensé que era una buena publicación aquí antes al respecto, pero resulta que simplemente no funciona para mí.

preguntado el 29 de junio de 12 a las 20:06

¿Podría agregar la etiqueta ref a través de jquery cuando se carga la página? -

Podría, pero eso requeriría ejecutar una consulta adicional para las opciones en la selección, luego ejecutar las opciones en la selección para ver si alguna de ellas tiene los criterios coincidentes, para luego agregarles lo que necesito de ellas. En general, tratar de evitar el proceso de consulta, ya que la consulta puede obtener resultados bastante grandes:

Desafortunadamente, ese enlace es uno de los que simplemente no funcionan para mí. Recibo un error para addOption en el que no pude rastrear el problema. -

1 Respuestas

Usando addMultiOption ($ value, $ label), simplemente establezco el parámetro de valor en algo como:

$value = $id . '" ref="' . $ref;

y cuando se renderiza obtienes:

<option value="<idValue>" ref="<refValue"><labelValue></option>

Espero que esto ayude ....

De acuerdo, el valor se escapa, pero optionClasses no lo hace dentro del ciclo que agrega addMultiOptions (val, lable). Hago algo como esto:

$optionClasses[<val>] = 'ref_' . <val> . '" ref="' . <ref>;

y luego, después del ciclo, haz un setAttrib ('optionClasses', $ optionClasses)

Y eso realmente funciona ...

Entonces, aquí hay un ejemplo en el que definiré una matriz que podría ser un conjunto de registros de una consulta de base de datos con las tres partes que vamos a usar; id, código y compensación

$records = array( array('id' => 1, 'code' => 'Code 1', 'offset' => 4),
                  array('id' => 2, 'code' => 'Code 2', 'offset' => 5),
                  array('id' => 3, 'code' => 'Code 3', 'offset' => 6)
           );

y usaré esto en una definición de elemento de formulario (en una clase que extiende Zend_Form) para una selección donde las opciones tienen un atributo llamado 'desplazamiento' que tendrá el valor 'desplazamiento' de la matriz

$e = $this->createElement('select', 'code_id');
$e->setLabel('Event Type:')
    ->setAttrib('size', 1);
$optionClasses = array();
foreach ($records as $record) {
    $optionClass = 'xcode_' . $record['id'] . '" xoffset="' . $record['offset'];
    $optionClasses[$record['id']] = $optionClass;
    $e->addMultiOption($record['id'],$record['code']);
}
$e->setAttrib('optionClasses', $optionClasses);
$this->addElement($e);

y cuando esto se procesa, produce un elemento de selección como

<select name="code_id" id="code_id">
    <option value="1" class="xcode_1" xoffset="4" selected="selected">Code 1</option>
    <option value="2" class="xcode_2" xoffset="5">Code 2</option>
    <option value="3" class="xcode_3" xoffset="6">Code 3</option>
</select>

y luego puede llegar al desplazamiento de la opción seleccionada con jQuery usando

 var xoffset = $("#code_id").find("option:selected").attr("xoffset");

esto funciona porque el atributo de clase resultante optionClasses no se escapa por el método de representación como lo hace el atributo de valor.

contestado el 16 de mayo de 13 a las 00:05

En realidad, esto no funcionó. El valor se escapa y se trata como un solo valor en lugar de atributos de valor y referencia. Sin embargo, sigo buscando esto y lo actualizaré. - stevenhill

El enfoque de optionClasses funciona, el primer intento de intentar cambiar la forma en que se usó el valor es lo que no funcionó. Espero que estos comentarios no sean confusos ... Pondré un ejemplo que puedo agregar a la respuesta para tratar de aclarar las cosas. - stevenhill

¡muchas gracias! Esto ha ayudado mucho. Me salvó de crear un elemento personalizado y ver ayudante - artístico

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.