本文介绍了如何通过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传递给窗体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!