如何将自定义表单元素助手添加到 Zend\Form\View\Helper\FormElement 的类型映射?
How do I add a custom Form element helper to Zend\Form\View\Helper\FormElement's typemap?
我正在尝试将 '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 添加了一个可调用对象:
'view_helpers' => [
'invokables' => [
'formdiv' => DivElementHelper::class,
],
],
难题的最后一部分,似乎是将我的表单div 助手放入Zend\Form\View\Helper\FormElement
的protected $typeMap
数组。我似乎无法弄清楚是什么配置添加了以下映射:
'div' => 'formdiv'
前者。里面明明有个addType方法,所以有人想到了!我怎么把我该死的 class 放在那里?
谢谢。
亚历克斯
ZF2 已经确认目前没有配置方式可以实现这一点。看起来 onBootstrap 中的 Module-way 是唯一的路线:
php
$services->get('ViewHelperManager')->get('formelement')->addType( 'div', 'formdiv' );
我正在尝试将 '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 添加了一个可调用对象:
'view_helpers' => [
'invokables' => [
'formdiv' => DivElementHelper::class,
],
],
难题的最后一部分,似乎是将我的表单div 助手放入Zend\Form\View\Helper\FormElement
的protected $typeMap
数组。我似乎无法弄清楚是什么配置添加了以下映射:
'div' => 'formdiv'
前者。里面明明有个addType方法,所以有人想到了!我怎么把我该死的 class 放在那里?
谢谢。 亚历克斯
ZF2 已经确认目前没有配置方式可以实现这一点。看起来 onBootstrap 中的 Module-way 是唯一的路线:
php
$services->get('ViewHelperManager')->get('formelement')->addType( 'div', 'formdiv' );