未读取扩展 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 使用注释的自定义路由