如何向Zend \ Form \ View \ Helper \ FormElement的typemap添加自定义Form元素助手?

时间:2015-04-06 13:21:35

标签: php forms zend-framework2

我正在尝试将一个'DivElement'(只是一个空白div)作为练习添加到ZF2表单中。

我创建了Application\Form\Element\DivElement

namespace Application\Form\Element;

use Zend\Form\Element;

class DivElement extends Element {

    protected $attributes = array(
        'type' => 'div'
    );

 }

为了配合它,我创建了Application\Form\View\Helper\DivElementHelper.php

namespace Application\Form\View\Helper;

use Zend\Form\ElementInterface;
use Zend\View\Helper\AbstractHelper;

class DivElementHelper extends AbstractHelper
{

    public function __invoke(ElementInterface $element = null)
    {
        if (!$element)
            return $this;

        return $this->render($element);
    }

    /**
     * @see \Zend\Form\View\Helper\AbstractHelper::render()
     * @param ElementInterface $oElement
     * @return string
     */
    public function render(ElementInterface $oElement)
    {
        return "<div class='" . $oElement->getAttribute('class')  . "'></div>";
    }
}

我还在module.config.php中添加了一个invokable:

'view_helpers' => [
    'invokables' => [
        'formdiv' => DivElementHelper::class,
    ],
],

这个难题的最后一部分似乎是将我的formdiv助手变成Zend\Form\View\Helper\FormElement的{​​{1}}数组。我似乎无法确定配置添加的映射:

'div'=&gt; 'formdiv'

对前者而言。那里显然有一个addType方法,所以有人想到了它!我如何在那里学习我的课程?

感谢。 亚历

1 个答案:

答案 0 :(得分:0)

ZF2已经确认目前没有配置方式来实现这一目标。看起来onBootstrap中的Module-way是唯一的路径:

php $services->get('ViewHelperManager')->get('formelement')->addType( 'div', 'formdiv' );