我总是按照这里的流程在sonata中配置子管理员:Sonata/symfony-父/子结构设置
除此之外,父admin是一个实体,子admin是mongodb文档。
/**
* Class Child
* @ODM'Document(collection="childs")
*/
class Child
{
/**
* @ODM'Id(strategy="INCREMENT")
* @var int
*/
protected $id;
/**
* @var parent
* @ODM'Field(type="string", name="parent")
* @Gedmo'ReferenceOne(type="entity", class="AppBundle'Entity'Parent",
* inversedBy="childs", identifier="parent_id", )
*/
protected $parent;
[getters & setters]
}
/**
* Parent
*
* @ORM'Table(name="parent")
*/
class Parent
{
/**
* @var integer
*
* @ORM'Column(name="id", type="integer")
* @ORM'Id
* @ORM'GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var ArrayCollection
* @Gedmo'ReferenceMany(type="document", class="AppBundle'Document'Child", mappedBy="parent")
*/
private $childs;
[getters + setters]
}
现在我添加了这行*@ODM''Field(type="string",name="parent"(因为它抛出了一个错误"未定义的索引:父">
我现在的错误如下:
类不存在
带有堆栈跟踪:
在供应商/条令/通用/lib/条令/通用/持久性/AbstractManagerRegistry.php中,第196行
在ReflectionClass->__construct(''(在供应商/条令/通用/lib/条令/通用/持久性/AbstractManagerRegistry.php中,第196行
在AbstractManagerRegistry->getManagerForClass(null(在供应商/sonata项目/条令mongodb管理捆绑包/sonata/DoctrineMongoDBAdminBundle/Model/ModelManager.php中,第207行
在ModelManager->getDocumentManager(null(在供应商/sonata项目/条令mongodb管理捆绑包/sonata/DoctrineMongoDBAdminBundle/Model/ModelManager.php中,第164行
在ModelManager->find(null,'1'(在第45行的vendor/sonata project/admin bundle/Form/DataTransformer/ModelToIdTransformer.php中
在ModelToIdTransformer->reverseTransform('1'(在vendor/symfony/symfony/src/symfony/Component/Form/Form.php的第1192行
在Form->viewToNorm('1'(vendor/symfony/symfoy/src/symfony/Component/Form/Form.php中,第637行
在表格->提交('1',true(在vendor/symfony/symfoy/src/symfony/Component/Form/Form.php中,位于第577行
在Form->submit(数组('value'=>'1'(,true(在vendor/symfony/symfoy/src/symfony/Component/Form/Form.php中,位于第577行
在表单->提交(数组('_sort_order'=>'ASC','_sort_by'=>对象(字段描述(,'_page'=>'1','_per_page'=>'25','loan'=>数组('value'=>'1'((在供应商/sonata项目/admin bundle/Datagrid/Datagrid.php中,位于第110行
在Datagrid->buildPager((在vendor/sonata project/admin bundle/Datagrid/Datagrid.php中,位于第265行
在Datagrid->getForm((在vendor/sonata project/admin bundle/Controller/CRUDController.php中的第210行
在CRUDController->listAction((在call_user_func_array(array(object(CRUDController(,'listAction'(,array(((应用程序内/bootstrap.hp.cache,电话:3109
在HttpKernel->handleRaw(对象(请求(,"1"(应用程序内/bootstrap.hp.cache,第3071行
在HttpKernel->句柄(object(Request(,'1',true(在应用程序内/bootstrap.hp.cache的第3222行
在ContainerwareHttpKernel->句柄(对象(请求(,"1",true(应用程序内/bootstrap.hp.cache,第2444行
在内核->句柄(对象(请求((在web/app_dev.php的第28行
如果我进入ModelToIdTransformer.php并手动设置类名,一切都会成功。但我找不到在上游配置它的方法。
有人有同样的问题吗?或者成功地制作了这样的作品?
谢谢。
我不知道你的管理类看起来怎么样,但通常当我让映射器(例如**list(猜测服务类型时,我会得到未定义索引**消息。
这就是为什么我在$listMapper中将其明确定义为第二个参数:
$listMapper->add('site', 'entity');
也许这已经解决了你最初的问题。