索纳塔创建实体管理仪表板


sonata create entity admin dashboard

我正在尝试使用奏鸣曲管理包。

我的仪表板中有两个实体:用户和问卷

我有两个链接用于两个词,添加新和列表。

但是,如果我单击问卷列表,我就有问卷列表,

当我单击用户列表时,我也有问卷列表(而不是用户列表)。

另一个问题,当我点击添加时,我有一个很好的形式,但它与

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中的仪表板配置,我认为您在配置中引用了相同的服务。最后,如果奏鸣曲返回错误,您必须检查您的逻辑,我的意思是您必须检查您的断言并在表单提交事件后检查对象。