2014-09-04 24 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