Symfony 奏鸣曲 - 形式映射器

Posted

技术标签:

【中文标题】Symfony 奏鸣曲 - 形式映射器【英文标题】:Symfony sonata - form mapper 【发布时间】:2018-02-24 09:56:58 【问题描述】:

在 symfony 奏鸣曲中:

我有一个对象 CONTACT 包含许多 ROLE -

我想在表单映射器中查看所有实体角色: 我的实体角色有 4 个参数。 (标签功能、电话、邮箱等)

实际上我只有一个指向该对象的链接。 (但我想查看实体内部的所有参数)

我在我的 ADMIN 类的表单映射器中尝试这个

 $showMapper
           ->with('CONTACT - FUNCTION')
           ->add('role')
           ->end()

命名空间 AdminBundle\Entity;

使用 Doctrine\Common\Collections\ArrayCollection;

/**
 * Role
 */
class Role

    /**
     * @var int
     */
    private $id;

    /**
     * @var string(unique=true)
     */
    private $function;

    /**
     * @var int
     */
    private $organisation;

    /**
     * @var string
     */
    private $phone;

    /**
     * @var string
     */
    private $email;

     /**
     * @var int
     */
    private $contact=null;

    /**
     * Get id
     *
     * @return int
     */
    public function getId()
    
        return $this->id;
    


    public function __toString()
    return sprintf("%s %s", $this->getFunction(), $this->getOrganisation());
    

    public function getFunction_name()
    
    return $this->getFunction();
    




     /**
     * Set contact
     *
     * @param int $contact
     *
     * @return role
     */
    public function setContact($contact)
    
        $this->contact = $contact;

        return $this;
    

    /**
     * Get contact
     *
     * @return int
     */
    public function getContact()
    
        return $this->contact;
    


    /**
     * Set function
     *
     * @param string $function
     *
     * @return Role
     */
    public function setFunction($function)
    
        $this->function = $function;

        return $this;
    

    /**
     * Get function
     *
     * @return string
     */
    public function getFunction()
    
        return $this->function;
    

    /**
     * Set organisation
     *
     * @param int $organisation
     *
     * @return Role
     */
    public function setOrganisation($organisation)
    
        $this->organisation = $organisation;

        return $this;
    

    /**
     * Get organisation
     *
     * @return int
     */
    public function getOrganisation()
    
        return $this->organisation;
    

    /**
     * Set phone
     *
     * @param string $phone
     *
     * @return Role
     */
    public function setPhone($phone)
    
        $this->phone = $phone;

        return $this;
    

    /**
     * Get phone
     *
     * @return string
     */
    public function getPhone()
    
        return $this->phone;
    

    /**
     * Set email
     *
     * @param string $email
     *
     * @return Role
     */
    public function setEmail($email)
    
        $this->email = $email;

        return $this;
    

    /**
     * Get email
     *
     * @return string
     */
    public function getEmail()
    
        return $this->email;
    


还有我的教义文件

AdminBundle\Entity\Role:
    type: entity
    table: null
    repositoryClass: AdminBundle\Repository\RoleRepository
    id:
        id:
            type: integer
            id: true
            generator:
                strategy: AUTO
    fields:
        function:
            type: string
            length: 100
            unique: true
        phone:
            type: string
            length: 100
            nullable: TRUE
        email:
            type: string
            length: 100
            nullable: TRUE
    manyToOne:
        organisation:
            targetEntity: AdminBundle\Entity\Organisation
            joinColumn:
                name: organisation
                referencedColumnName: id
            nullable: TRUE
    manyToMany:
        contact:
            targetEntity: AdminBundle\Entity\Contact
            joinTable:
                name: allrole
                joinColumns:
                    role:
                        referencedColumnName: id
                inverseJoinColumns:
                    contact:
                        referencedColumnName: id

【问题讨论】:

【参考方案1】:

在您的 Role 实体中创建一个 __toString() 方法,并使用您要显示的属性。

public function __toString()

    return (string) "Function: " . $this->function . ", Phone: " . $this->phone . ", Email: " . $this->email;

【讨论】:

这是一个关系倍数。当我这样做时,什么都没有出现。它只是写:角色名称等......但有一个空格 我把我的实体放在前面 对不起,我没有看到这是针对多对多关系的,我编辑了我的答案。 你能告诉我 to_string 方法的好过程吗?例如实体“角色”的属性“电话”?? toString 方法是您的对象的字符串表示形式(不仅仅是一个属性),我已经用一个示例编辑了我的答案。

以上是关于Symfony 奏鸣曲 - 形式映射器的主要内容,如果未能解决你的问题,请参考以下文章

如果映射器在中途失败并且 Hadoop 重试该映射器,自定义计数器会发生啥

MyBatis 生成器 - 生成映射器实现

根据映射器代码中的某些逻辑,将映射器中的一些数据(行)写入单独的目录

纯 Java MyBatis 映射器?

keycloak 客户端协议映射器(脚本映射器)将请求标头添加到令牌中

双层设备映射器 - 自定义 dm-crypt