2015-04-05 154 views
1

我正在尝试使用奏鸣曲用户束。我必须添加一些字段。奏鸣曲用户束,覆盖

我已经看到了一个文件夹Application \ Sonata \ UserBundle,它是用sonata用户包安装创建的。

我已经然后试图修改实体\ user.php的文件:

<?php 

namespace Application\Sonata\UserBundle\Entity; 

use Sonata\UserBundle\Entity\BaseUser as BaseUser; 

class User extends BaseUser 
{ 
    /** 
    * @var integer $id 
    */ 
    protected $id; 

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

例如增加:

<?php 

namespace Application\Sonata\UserBundle\Entity; 

use Sonata\UserBundle\Entity\BaseUser as BaseUser; 

class User extends BaseUser 
{ 
    /** 
    * @var integer $id 
    */ 
    protected $id; 

    /** 
    * Get id 
    * 
    * @return integer $id 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 
    /** 
    * @var String $nom 
    */ 
    protected $nom; 
/** 
* Get nom 
* 
* @return string 
*/ 
public function getNom() { 
    return $this->nom; 
} 

但没有更新我的数据库并没有什么工作。你知道该怎么做吗?

另外我也试图在UserAdmin.php文件中写入:

$formMapper 
      ->with('General') 
       ->add('username') 
       ->add('email') 
       ->add('plainPassword', 'text', array(
        'required' => (!$this->getSubject() || is_null($this->getSubject()->getId())) 
       )) 
       ->add('nom') 
      ->end() 
      ->with('Groups') 
       ->add('groups', 'sonata_type_model', array(
        'required' => false, 
        'expanded' => true, 
        'multiple' => true 
       )) 
      ->end() 

但我有以下错误:

Please define a type for field `Prenom` in `Sonata\UserBundle\Admin\Entity\UserAdmin` 

感谢 问候

回答

2

一旦你有生成简单的扩展为奏鸣曲用户捆绑奏鸣曲为实体创建orm文件,例如,如果您的扩展束在src/Application中生成n您的ORM映射文件将作为src/Application/Sonata/UserBundle/Resources/config/doctrineUser.orm.xml根据User.mongodb.xml你的数据库类型添加字段定义教义映射文件

<?xml version="1.0" encoding="UTF-8"?> 
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping 
        http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> 
    <entity name="Application\Sonata\UserBundle\Entity\User" table="fos user table name"> 
     <id name="id" column="id" type="integer"> 
      <generator strategy="AUTO" /> 
     </id> 
     <field name="nom" type="string" column="title" length="255" nullable="false"/> 
    </entity> 
</doctrine-mapping> 

如果你不需要XML映射,并希望使用注释,然后重命名生成学说文件夹移动到您的User实体其他类似src/Application/Sonata/UserBundle/Resources/config/doctrine-backup现在添加一些注释中的表格字段映射

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

/** 
* @ORM\Table(name="fos user table name") 
* @ORM\Entity 
*/ 
class User extends BaseUser { 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="nom", type="string", length=255, nullable=true) 
    */ 
    protected $nom; 

    /** 
    * Set nom 
    * 
    * @param string $nom 
    * 
    * @return User 
    */ 
    public function setNom($nom) { 
     $this->nom= $nom; 

     return $this; 
    } 

    /** 
    * Get nom 
    * 
    * @return string 
    */ 
    public function getNom() { 
     return $this->nom; 
    } 

} 

另外有一点要注意DONOT修改束的核心文件,比如你的错误说:Sonata\UserBundle\Admin\Entity\UserAdmin试图重写主用户管理类索纳塔的提供通过用户捆绑配置的方式来定义管理类

sonata_user: 
    class:     # Entity Classes 
     user:    Application\Sonata\UserBundle\Entity\User 
     group:    Application\Sonata\UserBundle\Entity\Group 

    admin:     # Admin Classes 
     user: 
      class:   Application\Sonata\UserBundle\Admin\UserAdmin # there define your extended admin class 
      controller:  SonataUserBundle:UserCURD 
      translation: SonataUserBundle 

     group: 
      class:   Sonata\UserBundle\Admin\Entity\GroupAdmin 
      controller:  SonataAdminBundle:CRUD 
      translation: SonataUserBundle 
+0

@M哈立德·朱奈德我添加了一个新的字段名称为'$ nic'并解决它。但在管理员一侧,该字段被标记为“form.label_nic”,但它应该显示为“nic”。 – 2015-09-29 06:08:36

相关问题