我正在尝试使用奏鸣曲管理包。
我的仪表板中有两个实体:用户和问卷
我有两个链接用于两个词,添加新和列表。
但是,如果我单击问卷列表,我就有问卷列表,当我单击用户列表时,我也有问卷列表(而不是用户列表)。
另一个问题,当我点击添加时,我有一个很好的形式,但它与
questionnaireBundle'Entity'questionnaire:0000000037b8f75700000000ca0fce3d
为什么是":0000000037b8f75700000000ca0fce3d"?
如果我填写表格并单击创建,则会出现错误:
An error has occurred during the creation of item "questionnaireBundle'Entity'avance:000000001c934f6f00000000d6359d04".
我做了什么?
我的问卷管理员:
<?php
namespace questionnaireBundle'Admin;
use Sonata'AdminBundle'Admin'Admin;
use Sonata'AdminBundle'Datagrid'ListMapper;
use Sonata'AdminBundle'Datagrid'DatagridMapper;
use Sonata'AdminBundle'Form'FormMapper;
class questionnaireAdmin extends Admin {
// Fields to be shown on create/edit forms
protected function configureFormFields(FormMapper $formMapper) {
$formMapper
->add('nom')
->add('nbreQuestions')
;
}
// Fields to be shown on filter forms
protected function configureDatagridFilters(DatagridMapper $datagridMapper) {
$datagridMapper
->add('nom')
->add('nbreQuestions')
;
}
// Fields to be shown on lists
protected function configureListFields(ListMapper $listMapper) {
$listMapper
->addIdentifier('nom')
->add('nbreQuestions')
;
}
}
我的问卷实体:
<?php
namespace questionnaireBundle'Entity;
use Doctrine'ORM'Mapping as ORM;
use Symfony'Component'Validator'Constraints as Assert;
/**
* questionnaire
*
* @ORM'Table()
* @ORM'Entity
*/
class questionnaire {
/**
* @var integer
*
* @ORM'Column(name="id", type="integer")
* @ORM'Id
* @ORM'GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM'Column(name="nom", type="string", length=255)
*/
private $nom;
/**
* @var integer
*
* @ORM'Column(name="nbreQuestions", type="integer")
*
* @Assert'NotBlank(message="Veuillez entrer un nombre de questions.")
* @Assert'Type(type="integer")
*/
private $nbreQuestions;
/**
* Get id
*
* @return integer
*/
public function getId() {
return $this->id;
}
/**
* Set nom
*
* @param string $nom
* @return questionnaire
*/
public function setNom($nom) {
$this->nom = $nom;
return $this;
}
/**
* Get nom
*
* @return string
*/
public function getNom() {
return $this->nom;
}
/**
* Set nbreQuestions
*
* @param integer $nbreQuestions
* @return questionnaire
*/
public function setNbreQuestions($nbreQuestions) {
$this->nbreQuestions = $nbreQuestions;
return $this;
}
/**
* Get nbreQuestions
*
* @return integer
*/
public function getNbreQuestions() {
return $this->nbreQuestions;
}
}
我的配置:
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
- { resource: @UserBundle/Resources/config/admin.yml }
- { resource: @questionnaireBundle/Resources/config/admin.yml }
我的管理员用户服务:
services:
sonata.admin.user:
class: UserBundle'Admin'UserAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Content", label: "User" }
arguments:
- ~
- UserBundle'Entity'User
- ~
calls:
- [ setTranslationDomain, [UserBundle]]
我的管理员问卷服务:
services:
sonata.admin.questionnaire:
class: questionnaireBundle'Admin'questionnaireAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Content", label: "questionnaire" }
arguments:
- ~
- questionnaireBundle'Entity'questionnaire
- ~
calls:
- [ setTranslationDomain, [questionnaireBundle]]
我的确认:
sonata_block:
default_contexts: [cms]
blocks:
# Enable the SonataAdminBundle block
sonata.admin.block.admin_list:
contexts: [admin]
# Your other blocks
要防止奏鸣曲显示 0000000037b8f75700000000ca0fce3d,您需要将 toString 方法添加到实体中。对于仪表板链接的问题,您能否向我显示config.yml中的仪表板配置,我认为您在配置中引用了相同的服务。最后,如果奏鸣曲返回错误,您必须检查您的逻辑,我的意思是您必须检查您的断言并在表单提交事件后检查对象。