Im использует Zend, и мы имеем форму, которая объединяется через ряд функций. Один из них, в частности, addMultiOption, из которого вытаскивается из БД (откуда я не знаю, могу ли я изменить запрос, было бы намного проще и лучше все вокруг. В любом случае, мне нужно добавить «rel», атрибут для каждого параметра / опции, чтобы я мог выполнить задание по опции через jquery, когда этот параметр выбран, его не все параметры, но некоторые, параметры, которые не имеют дополнительной функциональности, будут иметь от 0, где те, у которых есть действия будет иметь от «одного», это происходит от БД. Я пытаюсь выяснить, как я могу добавить дополнительные атрибуты вне ценности
поддерживает ли Zend Framework это, если нет, как я могу это достичь? Я нашел то, что, по-моему, было хорошим сообщением здесь раньше, но оказывается, что это просто не работает для меня
Используя addMultiOption ($ value, $ label), я просто установил параметр значения примерно так:
$value = $id . '" ref="' . $ref;
и когда он делает, вы получаете:
<option value="<idValue>" ref="<refValue"><labelValue></option>
Надеюсь это поможет….
Хорошо, значение получает экранированное, но optionsClasses не так внутри цикла, что добавляет addMultiOptions (val, lable). Я делаю что-то вроде этого:
$optionClasses[<val>] = 'ref_' . <val> . '" ref="' . <ref>;
а затем после цикла просто выполните setAttrib ('optionClasses', $ optionsClasses)
И это на самом деле работает …
Итак, вот пример, где я буду определять массив, который может быть набором записей из запроса db с тремя частями, которые мы собираемся использовать; идентификатор, код и смещение
$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) );
и я буду использовать это в определении элемента формы (в классе, который расширяет Zend_Form) для выбора, где параметры имеют атрибут «offset», который будет иметь значение «смещение» из массива
$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);
и когда это визуализируется, он производит элемент select, например
<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>
а затем вы можете получить смещение выбранного параметра с помощью jQuery, используя
var xoffset = $("#code_id").find("option:selected").attr("xoffset");
это работает, потому что атрибут resultClasses, полученный в результате, не получает экранированный методом рендеринга, как это делает атрибут value.