2014-09-04 3 views
2

Какой самый простой способ передать переменную форме в zend framework 2?ZF2 Как передать переменную в форму

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

Спасибо!

+0

Как насчет '$ form-> setAttribute'? – raina77ow

ответ

3

Если вы расширяете форму со своим собственным классом:

class MyForm extends \Zend\Form\Form 

Вы можете пройти в любом переменных, которые вы хотели через его конструктор и передать имя формы для родительского класса Form как таковые:

public function __construct($myVar, $myVar2) 
{ 
    //do things with my vars 
    $this->setVar($myVar); 

    // send name to parent constructor 
    parent::__construct('myFormName'); 
} 

Вы также можете рассмотреть возможность использования Factory, чтобы ввести свою зависимость, которые могут быть сконфигурированы, например, в вашем Module.php:

public function getFormElementConfig() 
{ 
    return array(
     'factories' => array(
      'MyForm' => function (ServiceManager $sm) { 
       return new \MyNamespace\MyForm($sm->get('someDependancy')); 
      }, 
     ) 
    ); 
} 

Эта форма теперь доступна через сервис локатора из любого сервиса осознает класс:

$serviceLocator->get('FormElementManager')->get('MyForm'); 

С зависимостями инжектированных через завод.

+0

Это сработало отлично! Благодаря! – Peter

+0

Добро пожаловать! – matwr

+2

Также вы можете передать параметры в форму, используя FormElementManager для извлечения ваших форм. т.е.: $ serviceLocator-> get ('FormElementManager') -> get ('App \ My \ Form', array ('myOption' => 'foo')); –

Смежные вопросы