未读取扩展 Sonata 用户类中的注释

Posted

技术标签:

【中文标题】未读取扩展 Sonata 用户类中的注释【英文标题】:Annotations in extended Sonata user class not being read 【发布时间】:2012-12-12 02:17:39 【问题描述】:

我使用 Sonata EasyExtends 包扩展了 Sonata 项目的用户包。 默认放在src/Application/Sonata/UserBundle下

现在我想自定义扩展类并添加一些字段。 我注意到虽然没有处理注释,但我需要在 src/Application/Sonata/UserBundle/Resources/config/doctrine/User.orm.xml 中定义映射

有什么方法可以使用注释而不是 XML 文件? 我认为它会解决我引用用户类的很多问题,就像现在的命令

php 应用程序/控制台原则:schema:update --force

似乎无法识别注释..

【问题讨论】:

【参考方案1】:

在简历中,如果使用 XML,注解没有规则。

如果你删除 config/doctrine 文件夹,它会寻找注解,在那里,你可以放你想要的。

【讨论】:

【参考方案2】:

首先删除Application/Sonata/UserBundle/Resources/config/doctrine

之后将Entity/User.php和Entity/Group.php改为注解类型:

<?php

namespace Application\Sonata\UserBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Sonata\UserBundle\Entity\BaseUser as BaseUser;

/**
 * User
 *
 * @ORM\Table(name="fos_user_user")
 * @ORM\Entity
 */

class User extends BaseUser


    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(type="string", length=127)
     */
    protected $test;

<?php

namespace Application\Sonata\UserBundle\Entity;

use Sonata\UserBundle\Entity\BaseGroup as BaseGroup;
use Doctrine\ORM\Mapping as ORM;

/**
 * Group
 *
 * @ORM\Table(name="fos_user_group")
 * @ORM\Entity
 */
class Group extends BaseGroup


    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;


最后你应该输入: php app/console dictionary:schema:update --force 一切都应该正常工作。

【讨论】:

以上是关于未读取扩展 Sonata 用户类中的注释的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的类型错误:无法读取 null 的属性(正在读取“addEventListener”)Chrome 扩展

Sonata Admin Bundle 使用注释的自定义路由

React-无法读取未定义的属性“setState”

@Controller 类中的 Spring @Value 注释未评估属性文件中的值

使用 Sonata 管理员导出用户角色

Vuetify 错误 - “无法读取未定义的‘扩展’属性”