Заполните элемент zend_form из перенаправленного действия

Теперь я почти уверен, что это невозможно, но я был бы признателен за пояснение почему, чтобы я мог избежать подобных ситуаций в будущем! У меня есть форма, которая при отправке в зависимости от ввода пользователя либо завершается, либо требует дальнейшего ввода с параметром, который необходимо передать в новую форму.

Первоначальная отправка работает нормально, и значения доступны в следующей форме!

    $fooID = $foo->save($values);
    if($values['register'] == "true")
    {
      $this->_forward("register", "user", null, array('fooID' => $fooID));
    }else{
      $this->_redirect('/feedback/thanks');
    }

Когда я делаю следующее в действии, к которому я пересылаю, правильный идентификатор печатается на экране.

if($this->_getParam('fooID') != null){
    echo "FOO: ".$this->_getParam('fooID');
}

Однако по какой-то причине я не могу ни добавить элемент в форму $, инициализированную этим действием, ни заполнить значение существующего поля каким-либо значением.

$form->populate(array('fooID' => $this->_getParam('fooID')));

Вышеупомянутое просто ничего не делает, и значение не заполняется, для справки элемент создается следующим образом:

     $this->addElement('hidden', 'fooID', array(
        'decorators' => $this->_noElementDecorator,
        'validators' => array(
            'Digits'
        ),
        'required' => true
    ));

Что странно, так это то, что если я изменю fooID в качестве имени скрытого элемента на просто id, значение будет заполнено параметром url предыдущей страницы отправки формы.

Как я уже сказал, я знаю, что это невозможно, просто интересно, где находится ограничение, могу ли я напечатать значение рядом с оператором, который не заполняет значение элемента.


person Shaun Bohannon    schedule 20.09.2009    source источник
comment
Он должен работать. Вы пытались заполнить fooID только из предопределенной строки, чтобы увидеть, действительно ли это работает?   -  person Jani Hartikainen    schedule 20.09.2009
comment
Я пробовал просто заполнить поле магическим значением, например: $ form- ›populate (array ('fooID' =› '10')); Даже это не работает!   -  person Shaun Bohannon    schedule 20.09.2009
comment
может быть полезно немного больше контекста: например, когда вы вызываете $ form- ›isValid ()? До или после $ form- ›populate ()?   -  person Steve    schedule 21.09.2009


Ответы (1)


  • Возможно ли, что вы меняете значение после выполнения вашего populate()? Например: $form->isValid($this->_request->getPost()); установит новые значения формы.

  • Попробуйте var_dump($form->fooID->getValue()); в качестве строки отладки после populate() и один раз до завершения действия? Что это вам показывает?

person gnarf    schedule 20.09.2009