2013-04-29 64 views
0

我需要您的幫助,在FOSUSerBundle中以我的註冊表格添加一些字段。 我想本地化一個用戶並將他的緯度/經度保存在註冊表中。 我在我的用戶實體和我的本地化實體之間創建了一對一的關係,但是我沒有看到我的代碼可以在註冊階段設置用戶的緯度和經度。在FOSUser註冊表中添加帶OneToOne關係的字段

我是否必須重寫寄存器控制器或某些事件?我只是不明白哪裏把我的代碼...

首先,這裏的文檔沒有更新新的簽名方法:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/overriding_controllers.md

本教程是好,但我不知道如何與使用一個oneToOne場...: http://www.idci-consulting.fr/fosuserbundle-comment-gerer-les-utilisateurs-avec-symfony2/

事實上,添加我的關係在用於FOSU​​serBundle用戶實體:

<?php 

namespace rs\UserBundle\Entity; 

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

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

    /** 
    * @ORM\OneToOne(targetEntity="rs\UserBundle\Entity\Localisation", cascade={"persist"}) 
    */ 
    protected $localisation; 


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

    /** 
    * Set localisation 
    * 
    * @param \rs\UserBundle\Entity\Localisation $localisation 
    * @return User 
    */ 
    public function setLocalisation(\rs\UserBundle\Entity\Localisation $localisation = null) 
    { 
     $this->localisation = $localisation; 

     return $this; 
    } 

    /** 
    * Get localisation 
    * 
    * @return \rs\UserBundle\Entity\Localisation 
    */ 
    public function getLocalisation() 
    { 
     return $this->localisation; 
    } 
} 

這裏是我的本地化實體:

<?php 

namespace rs\UserBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* Localisation 
* 
* @ORM\Table() 
* @ORM\Entity 
*/ 
class Localisation 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 


    /** 
    * @var float 
    * 
    * @ORM\Column(name="latitude", type="decimal") 
    */ 
    private $latitude; 

    /** 
    * @var float 
    * 
    * @ORM\Column(name="longitude", type="decimal") 
    */ 
    private $longitude; 

    /** 
    * @var integer 
    * 
    * @ORM\OneToOne(targetEntity="rs\UserBundle\Entity\Clan", cascade={"persist"}) 
    */ 
    private $clan; 


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


    /** 
    * Set latitude 
    * 
    * @param float $latitude 
    * @return Localisation 
    */ 
    public function setLatitude($latitude) 
    { 
     $this->latitude = $latitude; 

     return $this; 
    } 

    /** 
    * Get latitude 
    * 
    * @return float 
    */ 
    public function getLatitude() 
    { 
     return $this->latitude; 
    } 

    /** 
    * Set longitude 
    * 
    * @param float $longitude 
    * @return Localisation 
    */ 
    public function setLongitude($longitude) 
    { 
     $this->longitude = $longitude; 

     return $this; 
    } 

    /** 
    * Get longitude 
    * 
    * @return float 
    */ 
    public function getLongitude() 
    { 
     return $this->longitude; 
    } 



    /** 
    * Set clan 
    * 
    * @param \rs\UserBundle\Entity\Clan $clan 
    * @return Localisation 
    */ 
    public function setClan(\robStorm\UserBundle\Entity\Clan $clan = null) 
    { 
     $this->clan = $clan; 

     return $this; 
    } 

    /** 
    * Get clan 
    * 
    * @return \rs\UserBundle\Entity\Clan 
    */ 
    public function getClan() 
    { 
     return $this->clan; 
    } 
} 

感謝;)

回答

0

你必須重載/擴展現有RegistrationFormType。請參閱文檔中的overriding forms。在你的類型中,你將位置添加爲子表單。所以你也必須創建一個LocationFormType。

如果您需要處理一些logig,您必須登錄hook into the controller with events。不幸的是,事件只能在dev-master中找到,而不是在穩定版本中。如果您不得不使用穩定版本,則必須override the controller並複製舊版本中的所有邏輯,然後添加邏輯。

+0

事實上,經緯度是使用html5géolocation的JavaScript腳本定義的。 我在註冊表中添加了兩個隱藏的輸入文本,js腳本用緯度/經度設置它們的值。 所以沒有來自用戶的動作,沒有實際的輸入文字,只有js和兩個隱藏字段。 我必須用我的兩個隱藏字段創建LocationFormType嗎? – user2178964 2013-04-29 15:43:49

相關問題