没有设置对象管理器zf2 fieldset

时间:2016-08-03 21:31:54

标签: forms doctrine-orm zend-framework2 fieldset

有人可以向我解释如何修复此错误"没有设置对象管理器"

这是字段集:

namespace Trunk\Form;

use Trunk\Entity\Category;
use Doctrine\Common\Persistence\ObjectManager;
use DoctrineModule\Stdlib\Hydrator\DoctrineObject as DoctrineHydrator;
use Zend\Form\Fieldset;
use Zend\InputFilter\InputFilterProviderInterface;

class CategoryFieldset extends Fieldset implements InputFilterProviderInterface
{
    public function __construct($objectManager)
    {
        parent::__construct('category');

        $this->setHydrator(new DoctrineHydrator($objectManager, 'Trunk\Entity\Category'));

        $this->add(array(
            'type' => 'DoctrineORMModule\Form\Element\DoctrineEntity',
            'name' => 'title',
            'object_manager' => $objectManager,
            'target_class'   => 'Trunk\Entity\Category',
            'property'       => 'title',
            'is_method'      => false,
            'find_method'    => array(
                'name'   => 'findBy',
                'params' => array(
                    'criteria' => array('parentid' => 0),
                    'orderBy'  => array('title' => 'ASC'),
                ),
            )
       ));
    }
}

以下是错误消息:

  

F:\ XAMPP \ htdocs中\ travelltheworld \厂商\教义\学说模块\ SRC \ DoctrineModule \表格\元素\ Proxy.php:535

     

没有设置对象管理器

我已将工厂中的实体管理器注入我的表单,称为ProductForm。在该表单中,我有一个名为ProductFieldset的基本字段集,在ProductFieldset中我插入了CategoryFieldset,我需要从数据库中选择类别并在选择框中显示它们。

如果您需要更多代码或解释,请问我。

1 个答案:

答案 0 :(得分:0)

Fieldset对象可以使用Hydrator来保湿您的实体。

以下是字段集的完整示例 https://github.com/Grafikart/BlogMVC/blob/master/ZendFramework2/module/Blog/src/Blog/Form/Fieldset/CommentFieldset.php

正如您所看到的,fieldset可以通过" awareInterface"名为ObjectManagerAwareInterface

use DoctrineModule\Persistence\ObjectManagerAwareInterface;

和特征:use ProvidesObjectManager;

use DoctrineModule\Persistence\ProvidesObjectManager as ProvidesObjectManager ;

你错过了字段集中的那些,这应该可以解决你的问题。

您的表格和他的工厂与字段集完全不同,因此它无法以这种方式构建注入。