Как ввести значение в Zend Form? - PullRequest
1 голос
/ 20 ноября 2011

У меня есть элемент select в форме Zend.Чтобы заполнить массив multiOptions элемента, я вызываю статический метод для модели, которая возвращает массив.Мне нужно передать параметр статическому методу, но сначала мне нужно получить параметр в Zend Form.Как я могу это сделать?

Я попытался передать массив конструктору Zend Form, а затем использовать getAttrib () из формы.Это работает нормально, однако этот параметр также отображается в виде параметра HTML в форме, что не является моим намерением.

Спасибо!

Ответы [ 3 ]

1 голос
/ 12 июля 2013

Чтобы параметры конструктора не отображались в качестве атрибутов формы, необходимо указать setter для каждого переданного параметра.

Пример:

class Forms_Hello extends Zend_Form
{
    protected $_names = array();

    public function init()
    {
        $names = $this->getNames();
    }

    public function setNames($names)
    {
        $this->_names = $names
    }

    public function getNames()
    {
        return $this->_names;
    }
}

$form = new Forms_Hello(array(
    'names' => array(
        1 => 'hello',
        2 => 'world'
));    
0 голосов
/ 20 марта 2015

Zend_Form конструктор ищет определенный шаблон в именах методов в вашей форме. Шаблон setMethodName. конструктор вызывает MethodName() в вашем классе и передает ему параметр.

Таким образом, у вас будет это в вашем классе:

class My_Form extends Zend_Form
{

    protected $_myParameters;

    public function setParams($myParameters)
    {
        $this->_myParameters = $myParameters;
    }

И вы передаете параметры в вашу форму с помощью:

$form = new My_Form( array('params' => $myParameters) );

Таким образом, вместо params вы можете использовать любые другие имена (конечно, если они еще не существуют в Zend_Form).

0 голосов
/ 23 ноября 2011

ОК, так что я решил установить это снаружи объекта формы, после того, как объект был создан.Не совсем то, что я искал, но работоспособный, тем не менее ...

...