Php ZF2如何将变量传递给窗体

Php ZF2如何将变量传递给窗体,php,forms,zend-framework2,Php,Forms,Zend Framework2,在zend framework 2中,将变量传递给表单的最简单方法是什么 似乎您只能向构造函数发送名称值,但我需要向表单发送一些选项来设置/填充一些选择器 谢谢 如果您使用自己的类扩展表单: class MyForm extends \Zend\Form\Form 然后,您可以通过其构造函数传入任何您喜欢的变量,并将表单名称传递给父表单类,如下所示: public function __construct($myVar, $myVar2) { //do things with my v

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

似乎您只能向构造函数发送名称值,但我需要向表单发送一些选项来设置/填充一些选择器


谢谢

如果您使用自己的类扩展表单:

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');
}

您可能还想考虑使用<代码>工厂>代码>来注入您的依赖项,这些依赖项可以在您的<代码>模块中配置,PHP<代码>:

public function getFormElementConfig()
{
    return array(
        'factories' => array(
            'MyForm' => function (ServiceManager $sm) {
                return new \MyNamespace\MyForm($sm->get('someDependancy'));
            },
        )
    );
}
此表单现在可通过服务定位器从任何服务感知类获得:

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

通过工厂注入依赖项。

那么
$form->setAttribute
呢?您还可以使用FormElementManager检索表单,将选项传递给表单。ie:$serviceLocator->get('FormElementManager')->get('App\My\Form',array('myOption'=>'foo');