我需要您的幫助,在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/
事實上,添加我的關係在用於FOSUserBundle用戶實體:
<?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;
}
}
感謝;)
事實上,經緯度是使用html5géolocation的JavaScript腳本定義的。 我在註冊表中添加了兩個隱藏的輸入文本,js腳本用緯度/經度設置它們的值。 所以沒有來自用戶的動作,沒有實際的輸入文字,只有js和兩個隱藏字段。 我必須用我的兩個隱藏字段創建LocationFormType嗎? – user2178964 2013-04-29 15:43:49