2014-09-04 39 views
2

在zend framework 2中将变量传递给表单最简单的方法是什么?ZF2如何将变量传递给表单

看来你只能发送一个名称值给构造器,但我需要发送一些选项到窗体来设置/填充一些选择器。

谢谢!

+0

'$ form-> setAttribute'? – raina77ow 2014-09-04 20:28:02

回答

3

如果你用自己的类扩展形式:

class MyForm extends \Zend\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 2014-09-04 21:02:03

+0

不客气! – matwr 2014-09-04 21:02:45

+2

也可以通过使用FormElementManager来检索您的表单传递选项到窗体。即:$ serviceLocator-> get('FormElementManager') - > get('App \ My \ Form',array('myOption'=>'foo')); – 2014-09-05 02:46:42