2012-01-21 21 views
2

FOSUserBundle登録フォームをオーバーライドするときに問題が発生しました。FOSUserBundleフォームの登録オーバーライド

取引は、Userエンティティでは、ユーザーの一部は、より明確にするために、(スポンサーが同じ実体にManyToOneである)「スポンサー」を持つことができますされ、これは、ユーザエンティティである:

<?php 

namespace Diz\UserBundle\Entity; 

use FOS\UserBundle\Entity\User as BaseUser; 
use Doctrine\ORM\Mapping as ORM; 

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


    /** 
    * create FK "sponsor_id" referenced to the id field on the same table 
    * @ORM\ManyToOne(targetEntity="User") 
    * @ORM\JoinColumn(name="sponsor_id", referencedColumnName="id", onDelete="SET NULL") 
    */ 
    protected $sponsor; 


    public function __construct() 
    { 
     // import FOSUserBundle properities -> 
     parent::__construct(); 

    } 

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

    /** 
    * Set sponsor 
    * 
    * @param Dizsurf\UserBundle\Entity\User $sponsor 
    */ 
    public function setSponsor(\Dizsurf\UserBundle\Entity\User $sponsor) 
    { 
     $this->sponsor = $sponsor; 
    } 

    /** 
    * Get sponsor 
    * 
    * @return Dizsurf\UserBundle\Entity\User 
    */ 
    public function getSponsor() 
    { 
     return $this->sponsor; 
    } 

} 

表示されますか?

<?php 

namespace Diz\UserBundle\Form\Type; 

use Symfony\Component\Form\FormBuilder; 
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType; 

class RegistrationFormType extends BaseType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 

     parent::buildForm($builder, $options); 

     // add your custom field 
     $builder->add('sponsor', 'fos_user_username'); 

    } 

    public function getName() 
    { 
     return 'diz_user_registration'; 
    } 

    public function getDefaultOptions(array $options) 
    { 
     return array(
      'data_class' => 'Diz\UserBundle\Entity\User', // Ni de modifier la classe ici. 
     ); 
    } 
} 

そして、それがすべてです:

その後、RegistrationFormTypeを上書きするために、私は公式helpのものを作成しました!かなりシンプルになっているように見えます!しかし...

単純にユーザー名をユーザーエンティティに変換するには、FOSアドバイスを使用してビルダーで "fos_user_username"を使用します。

私のために[OK]を、私は、このフォームをテスト:

  • 存在するスポンサーでは、私は、「パスワードを入力してください」このエラーを持っています。 (もちろん私は2回パスワードを入力しました..)。

  • しかし、存在しないユーザーのフォームを送信すると、登録フォームが正常に送信されました。

私は間違ったことをしましたか? ありがとうございます! ;-)

Dizda。

+0

エラーが発生したフォームは[link](http://cl.ly/3s293D2R1q3i3Q3J0z2S)でご覧になれます。ありがとう^^ – dizda

答えて

2

固定。

symfonyを2.0.10から2.1にアップグレードしましたが、問題はもう存在しません。

関連する問題