#zend-framework #element #hidden
#zend-framework #элемент #скрытый
Вопрос:
Я создаю скрытый элемент таким образом:
$this->addElement('hidden', 'id', '1');
но то, что я получаю, это:
<input type="hidden" name="id" value="" id="id" />
Я также пробовал подобное:
$this->addElement('hidden', 'id', array(
'value' => 1
));
но лучше от этого не стало.
Что не так?
Комментарии:
1. Ваш второй пример должен сработать, поскольку я не вижу в нем ничего плохого.
2. Итак, причина не в этом коде. Вы, должно быть, где-то в своем коде делаете что-то, что вызывает проблемы. Без дополнительной информации трудно сказать, что не так.
3. Спасибо за все ответы, ребята. Я обнаружил, что проблема действительно была связана с проблемой isValid.
Ответ №1:
Возможно, вы используете
$form->populate($someData);
или
$form->isValid($someData);
где-то в вашем коде 😉
Комментарии:
1. Спасибо. Я начал искать другие методы, и действительно возникла проблема такого рода.
2. Да. isValid имеет тенденцию очищать форму, а пользовательский метод заполнения может довольно сильно испортить настройки по умолчанию
Ответ №2:
Я думаю, вам нужно поместить в свой класс form:
public function populate(array $values) {
parent::populate($values);
$this->addElement('hidden', 'hidden');
$el = $this->getElement('hidden');
$el->setValue(1);
}
Ответ №3:
Вы можете использовать метод setValue Zend_Form.
Попробуйте это так:
$this->getElement('your-name')->setValue(1);
Комментарии:
1. @softwareplay setVlue() завершает работу, пожалуйста, обратитесь к документации: framework.zend.com/manual/1.12/en/zend.form.forms.html
Ответ №4:
Возможно, перед рендерингом вы выполняете $form->setValue()
и идентификатор параметра равен нулю.
Комментарии:
1. Нет. У меня нет $form-> setValue(). Я проверил, метод даже не существует.
2. @ndefontenay тогда ваш второй пример верен. Без кода сложно что-то сказать.
Ответ №5:
У меня это работает (zf 1.1) с int или строкой, но вы пробовали передавать значение в виде строки?:
$this->addElement( 'hidden', 'id', array('value'=>'1') )
Ответ №6:
Ответ прост:
//$form <- is your zend form element;
$form->get('element_name')->setValue(1);
У меня сработало! 🙂
Как говорили те, кто был до меня: убедитесь, что на вашем пути нет установщиков элементов формы (populate, setValues и т.д.). 🙂
Ответ №7:
После проблемы с этим я использовал (в классе form)
$hidden = $this->createElement('hidden','hiddenElement');
$hidden->setAttrib('xxx','my value');
$this->addElement($hidden);
Извлеките значение с помощью
$form->hiddenElement->getAttrib('xxx');
Возможно, это не оптимальное решение, но для меня оно сработало.
Ответ №8:
Вы пробовали setDefault?
$this->addElement( 'hidden', 'id', array(
'default' => 1
) );