ZF3 中 src/ 文件夹中的自定义目录
Custom directory in src/ folder in ZF3
我有带表单的 mvc zf3 框架。表单和字段集 类 位于 src/Form
目录中。
以上工作正常。
我试图使 Form 目录更轻便、更清晰,所以我创建了 src/Fieldset
目录并将字段集 类 移到了那里。现在字段集 类 未通过表单 类.
找到
<?php
namespace Application\Form;
use Zend\Form\Element;
use Zend\Form\Form;
use Zend\Hydrator\ClassMethods as ClassMethodsHydrator;
use Zend\InputFilter\InputFilter;
class MyForm extends Form
{
public function __construct()
{
parent::__construct('my_form');
$this->setAttribute('method', 'post');
$this->setHydrator(new ClassMethodsHydrator(false));
$this->setInputFilter(new InputFilter());
$this->add([
'type' => AbcFieldset::class,
'name' => 'abcEntity',
'options' => [
'use_as_base_fieldset' => true,
],
]);
错误信息是
A plugin by the name "Application\Form\AbcFieldset" was not found in the plugin manager Zend\Form\FormElementManager\FormElementManagerV3Polyfill
如何使表单在新位置看到字段集 类?
第一个问题是 PSR-4 自动加载器正在文件 src/Form/AbcFieldset.php
目录中寻找 Application\Form\AbcFieldset
class。
你可以编写一个自定义的自动加载器,它会在 src/Fieldset
目录中查找,但最好坚持 PSR 标准,而不是将字段集的命名空间更改为 Application\Fieldset
(然后你将在您的示例中,需要在表单 class 的顶部添加 use Application\Fieldset\AbcFieldset;
。
第二个 'problem',错误消息的来源是字段集 class 尚未明确注册到表单元素管理器,因此您也可以添加到 module.config.php
'form_elements' => [
'factories' => [
\Application\Fieldset\AbcFieldset::class => \Zend\ServiceManager\Factory\InvokableFactory::class,
]
]
但这不是必需的,除非您需要为字段集编写自定义工厂 - 上面的名称空间更改应该可以解决问题。
我有带表单的 mvc zf3 框架。表单和字段集 类 位于 src/Form
目录中。
以上工作正常。
我试图使 Form 目录更轻便、更清晰,所以我创建了 src/Fieldset
目录并将字段集 类 移到了那里。现在字段集 类 未通过表单 类.
<?php
namespace Application\Form;
use Zend\Form\Element;
use Zend\Form\Form;
use Zend\Hydrator\ClassMethods as ClassMethodsHydrator;
use Zend\InputFilter\InputFilter;
class MyForm extends Form
{
public function __construct()
{
parent::__construct('my_form');
$this->setAttribute('method', 'post');
$this->setHydrator(new ClassMethodsHydrator(false));
$this->setInputFilter(new InputFilter());
$this->add([
'type' => AbcFieldset::class,
'name' => 'abcEntity',
'options' => [
'use_as_base_fieldset' => true,
],
]);
错误信息是
A plugin by the name "Application\Form\AbcFieldset" was not found in the plugin manager Zend\Form\FormElementManager\FormElementManagerV3Polyfill
如何使表单在新位置看到字段集 类?
第一个问题是 PSR-4 自动加载器正在文件 src/Form/AbcFieldset.php
目录中寻找 Application\Form\AbcFieldset
class。
你可以编写一个自定义的自动加载器,它会在 src/Fieldset
目录中查找,但最好坚持 PSR 标准,而不是将字段集的命名空间更改为 Application\Fieldset
(然后你将在您的示例中,需要在表单 class 的顶部添加 use Application\Fieldset\AbcFieldset;
。
第二个 'problem',错误消息的来源是字段集 class 尚未明确注册到表单元素管理器,因此您也可以添加到 module.config.php
'form_elements' => [
'factories' => [
\Application\Fieldset\AbcFieldset::class => \Zend\ServiceManager\Factory\InvokableFactory::class,
]
]
但这不是必需的,除非您需要为字段集编写自定义工厂 - 上面的名称空间更改应该可以解决问题。