我正在将一个继承自Zend Framework 2的应用程序迁移到Zend Framework 3,并遇到了一些问题,即注册我的自定义表单视图助手。当应用程序使用版本2时,这些助手有效,并且主要用于添加可访问性标记属性。例如,这是一个自定义FormText.php辅助程序。
<?php
namespace Application\Form\View\Helper;
use Zend\Form\ElementInterface;
use Zend\Form\View\Helper\FormInput;
class FormText extends FormInput
{
/**
* Attributes valid for the input tag type="text"
*
* @var array
*/
protected $validTagAttributes = array(
'name' => true,
'autocomplete' => true,
'autofocus' => true,
'dirname' => true,
'disabled' => true,
'form' => true,
'list' => true,
'maxlength' => true,
'pattern' => true,
'placeholder' => true,
'readonly' => true,
'required' => true,
'size' => true,
'type' => true,
'value' => true,
'aria-hidden' => true,
'aria-invalid' => true,
'aria-describedby' => true,
'aria-label' => true,
);
/**
* Determine input type to use
*
* @param ElementInterface $element
* @return string
*/
protected function getType(ElementInterface $element)
{
return 'text';
}
}
在我的应用程序的第二个版本中,助手是在Module.php中注册的(不确定为什么不是在module.config.php中),使用以下方法(只展示了一个助手以保持简洁):
public function getViewHelperConfig()
{
return array(
'invokables' => array(
// Form helpers
'FormText' => 'Application\Form\View\Helper\FormText',
),
);
}
在我尝试使用ZF3版本的应用程序中,我希望在module.config.php文件的返回语句中使用以下数组元素:
'view_helpers' => [
'factories' => [
View\Helper\Cdn::class => View\Helper\CdnFactory::class,
Form\View\Helper\FormText::class => InvokableFactory::class,
],
'aliases' => [
'cdn' => View\Helper\Cdn::class,
'FormText' => Form\View\Helper\FormText::class,
],
],
这对于表单视图助手来说是不起作用的,尽管“cdn”助手已经正确地注册并正常工作。表单视图助手不需要任何注入依赖项,因此我没有使用自定义工厂类。在application.config.php中列出了'Zend/Form'模块,并知道标准Zend表单视图助手正在工作。我已经无数次尝试了上面代码的许多变体,尝试使用SO问题的代码示例来注册助手,但所有问题似乎都与普通视图助手有关,而不是表单视图助手。如果您有任何建议,我将非常感激。谢谢。
Module.php
中删除了代码,然后在视图中使用$this->FormText()
调用FormText
? - Dolly Aswin