Zned 2 如何覆盖 FormElementErrors

Zned 2 How to override FormElementErrors

我想覆盖全局这些变量:

\Zend\Form\View\Helper\FormElementErrors.php 表格:

protected $messageCloseString     = '</li></ul>';
protected $messageOpenFormat      = '<ul%s><li>';
protected $messageSeparatorString = '</li><li>';

收件人:

protected $messageCloseString     = '</li></ul>';
protected $messageOpenFormat      = '<ul%s><li class="errors">';
protected $messageSeparatorString = '</li><li>';

我该怎么做? 谢谢!

您可以通过在您的视图文件之上调用此助手中的设置器来设置消息格式的任何部分:

<?php
$this->formElementErrors()
    ->setMessageOpenFormat('<p class="help-block">')
    ->setMessageSeparatorString('</p><p class="help-block">')
    ->setMessageCloseString('</p>');

TW Bootstrap.

的此示例格式错误消息

如果您想要全局设置,您可以为此(或任何其他)视图助手创建自己的工厂:

<?php

namespace Application\Factory\Form\View\Helper;

use Zend\Form\View\Helper\FormElementErrors;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

class FormElementErrorsFactory implements FactoryInterface
{
    public function createService(ServiceLocatorInterface $serviceLocator)
    {
        $helper = new FormElementErrors();
        $helper->setMessageOpenFormat('<ul%s><li class="errors">');

        return $helper;
    }
}

并覆盖 ViewHelperManager 的配置:

<?php
// module.config.php

return [
    'view_helpers' => [
        'factories' => [
            'formelementerrors' => \Application\Factory\Form\View\Helper\FormElementErrorsFactory::class,
        ],
    ],
];

现在您可以像往常一样使用 formElementErrors 查看助手,但需要您的自定义配置。

谢谢! Awnser 1 en 2 结合起来,给出:

namespace Application\Factory\Form\View\Helper;

use Zend\Form\View\Helper\FormElementErrors;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

class FormElementErrorsFactory implements FactoryInterface
{
public function createService(ServiceLocatorInterface $serviceLocator)
{
    $helper = new FormElementErrors();
    $helper->setMessageOpenFormat('<ul%s><li class="errors">');

    return $helper;
}
}

//module.config

'view_helpers' => array(
'invokables'=> array(
    'formelementerror' => '\Admin\Factory\Form\View\Helper\FormElementErrorsFactory'
)
),

//view.phtml
$element = $this->formElementErrors()
->setMessageOpenFormat('<p class="help-block">')
->setMessageSeparatorString('</p><p class="help-block">')
->setMessageCloseString('</p>');
foreach ($form as $element) {        
echo '<div class="form-group">
    <div class="input-group">';
echo $this->formElement($element);
echo '</div></div>';
echo $this->formElementErrors($element);
}
echo $this->form()->closeTag();?>