我总是按照此处找到的流程在sonata中配置子管理员: Sonata/symfony - parent/child structure setup
除此之外,父管理员是一个实体,孩子是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”) 因为它抛出了一个错误“undefined index:parent”
我现在遇到的错误如下:
班级不存在
堆栈跟踪:
第196行的vendor / doctrine / common / lib / Doctrine / Common / Persistence / AbstractManagerRegistry.php中的
在ReflectionClass - > __ construct('') 在vendor / doctrine / common / lib / Doctrine / Common / Persistence / AbstractManagerRegistry.php第196行
在AbstractManagerRegistry - > getManagerForClass(null) 在vendor / sonata-project / doctrine-mongodb-admin-bundle / Sonata / DoctrineMongoDBAdminBundle / Model / ModelManager.php第207行
在ModelManager - > getDocumentManager(null) 在vendor / sonata-project / doctrine-mongodb-admin-bundle / Sonata / DoctrineMongoDBAdminBundle / Model / ModelManager.php第164行
在ModelManager - > find(null,'1') 在vendor / sonata-project / admin-bundle / Form / DataTransformer / ModelToIdTransformer.php第45行
在ModelToIdTransformer - > reverseTransform('1') 在vendor / symfony / symfony / src / Symfony / Component / Form / Form.php第1192行
表格 - > viewToNorm('1') 在vendor / symfony / symfony / src / Symfony / Component / Form / Form.php第637行
表格 - >提交('1',true) 在vendor / symfony / symfony / src / Symfony / Component / Form / Form.php第577行
表格 - >提交(数组('值'=>'1'),true) 在vendor / symfony / symfony / src / Symfony / Component / Form / Form.php第577行
表格 - >提交(数组('_ sort_order'=>'ASC','_ sort_by'=>对象(FieldDescription),'_ page'=>'1','_ per_page'=>' 25','loan'=>数组('value'=>'1'))) 在vendor / sonata-project / 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() at call_user_func_array(array(object(CRUDController),'listAction'),array()) 在app / bootstrap.php.cache第3109行
在HttpKernel - > handleRaw(object(Request),'1') 在app / bootstrap.php.cache第3071行
在HttpKernel - > handle(object(Request),'1',true) 在app / bootstrap.php.cache第3222行
在ContainerAwareHttpKernel - > handle(object(Request),'1',true) 在app / bootstrap.php.cache第2444行
at Kernel - > handle(object(Request)) 在web / app_dev.php第28行
如果我进入ModelToIdTransformer.php并手动设置类名,则一切正常。但我无法找到在上游配置它的方法。
有人有同样的问题吗?或成功做出类似的工作?
谢谢。
答案 0 :(得分:0)
我不知道你的管理类看起来如何,但是当我让一个mapper(例如** list )猜测服务类型时,我得到 Undefined index **消息。
这就是我在 $ listMapper 中明确定义它作为第二个参数的原因:
$listMapper->add('site', 'entity');
也许这已经解决了你的初始问题。