Zend: получить параметр Url из Zend_Form - PullRequest
2 голосов
/ 01 июня 2011

Zend talk. Мне нужно установить скрытое поле формы в качестве значения параметра url. У меня есть:

class Form_Custom extends Zend_Form
{
  public function init()
  {
   [..] 
   $id = new Zend_Form_Element_Hidden('name');
   [..]
  }
}

Я знаю, что мог бы передать его (из контроллера) в массив параметров при создании экземпляра класса. Но как я могу сказать форме искать сам параметр URL ??

Спасибо

Luca

Ответы [ 3 ]

4 голосов
/ 01 июня 2011
class Form_Custom extends Zend_Form
{
  public function init()
  {
   //[..] 
   $id = new Zend_Form_Element_Hidden('name');
   //[..]
   $this->fill();
  }

  public function fill()
  {
      $this->name->setValue( Zend_Controller_Front::getInstance()->getRequest()->getParam( 'name', null ) );
  }
}

Используя приведенную выше конструкцию, вы можете заполнить поле при создании формы, а также вручную, используя $ form-> fill () из контроллера

1 голос
/ 01 июня 2011

Если вы хотите передать значение URL в скрытое поле, вы можете использовать следующий метод:

В вашем контроллере:

    // Get wanted value from url
    $var = $this->_request->getParam('url');

    // Get correct form using Formloader helper (or any other method that you might be using)
    $this->view->form = $this->_helper->FormLoader('formname', array('url'=> $var);

И в свою форму вы добавляете следующее:

protected $_url;

public function init(){
    $url = $this->_url;

    /*rest of your form*/
}

public function setUrl($value){
    $this->_url = $value;
}

Вот и все! Просто передайте переменную $ url в форме скрытого поля, и все будет готово:)

0 голосов
/ 02 июня 2011

Я не думаю, что есть способ сделать это, потому что Zend_form отделен от контроллера.Вы можете зарегистрировать в реестре свои переменные pos / get, но это грязно.Вы также можете получить прямой доступ к $ _GET / $ _ POST ...

Или в своем контроллере вы можете сделать:

$form = new Zend_form();
$form->populate($this->_getAllParams());

, которая заполнит вашу форму всеми значениями из $ _POST / $ _ GET

...