2015-04-05 68 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

相關問題