本文介绍了如何通过ZF2 FormElementManager将Doctrine ObjectManager传递给窗体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在ZF2中创建自定义表单元素,这需要FormElementManager。我目前正在使用Doctrine Hydrator创建表单,如。

UpdateBlogPostFormFactory

A factory to create the blog post update form. This attaches the fieldset and sets the use_as_base_fieldset option which allows it to use the fieldsets hydrator.

namespace MyModule\Form;

class UpdateBlogPostFormFactory
{
    public function __invoke($formElementManager, $name, $requestedName)
    {
        $form = new Form('update_blog_post);

        //...
        $factory = new \Zend\Form\Factory($formElementManager);
        $form->setFormFactory($factory);
        $form->add([
            'name' => 'blog_post',
            'type' => 'BlogPostFieldset',
            'options' => [
                'use_as_base_fieldset' => true,   
            ]
        ]);
        //...

        return $form;
    }
}

您还需要注册所需的服务 module.config.php 中的管理员。

You will also need to register the services with the required managers in module.config.php.

return [
    'form_elements' => [
        'factories' => [
            'UpdateBlogPostForm' => 'MyModule\Form\UpdateBlogPostFormFactory',
            'BlogPostFieldset' => 'MyModule\Form\BlogPostFieldsetFactory',
        ],
    ],
    'hydrators' => [
        'factories' => [
            'DoctrineEntityHydrator' => 'MyModule\Stdlib\Hydrator\DoctrineEntityHydratorFactory',
        ],
    ],
];

所以上面你可以在控制器中请求你的表单。

So with the above you can request your form in the controller.

$form = $formElementManager->get('UpdateBlogPostForm');

这篇关于如何通过ZF2 FormElementManager将Doctrine ObjectManager传递给窗体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-20 20:14