如何在zend 2中调用表单内的控制器函数

时间:2016-04-29 13:10:50

标签: php zend-framework zend-framework2

我是zend框架中的新手

我需要在表单选择元素

中添加动态值
$this->add(array(
        'type' => 'Zend\Form\Element\Select',
        'name' => 'SECTOR_ID',
        'attributes' => array(
            'class' => 'form-control select2drop',
            'id' => 'Sector_ID'
        ),
        'options' => array(
            'value_options' => $this->getOptionsForSectorSelect(),
        ),
        'disable_inarray_validator' => true
    ));

上面的代码帮助我获得动态值

但是我需要调用一个控制器函数来获取值,现在我在表单中写了getOptionsForSectorSelect 请帮帮我

1 个答案:

答案 0 :(得分:1)

您可以在控制器static

中制作该方法
class IndexController extends AbstractActionController {

    public static function getOptionsForSectorSelect() {
        // Building dynamic array ...
        return $dynamicArray;
    }      

    // More code ...
}

或者你可以在你的动作中创建表格时传递数组:

public function indexAction() {
    $dynamicArray = $this->getOptionsForSectorSelect();
    $myForm = new YourForm($dynamicArray);
    // more action code...
}

然后以你的形式:

class YourForm extends Form {

    private $dynamicArray;

    public function __construct(array $dynamicArray) {
        $this->dynamicArray = $dynamicArray;
    }

    $this->add(array(
        'type' => 'Zend\Form\Element\Select',
        'name' => 'SECTOR_ID',
        'attributes' => array(
            'class' => 'form-control select2drop',
            'id' => 'Sector_ID'
        ),
        'options' => array(
            'value_options' => $this->dynamicArray,
        ),
        'disable_inarray_validator' => true,
    ));

}

希望它有所帮助! :)