-1
我在symfony的第二天:-)我創建了實體,窗體和控制器「REGISTER USER」。我的表單將用戶添加到數據庫中,而不是其角色。symfony創建用戶和角色
我模仿此頁上:http://symfony.com/doc/current/cookbook/security/entity_provider.html
DB角色:
ID | NAME | ROLE
1 | user | ROLE_USER
2 | admin | ROLE_ADMIN
DB USER_ROLE
USER_ID | ROLE_ID
(EMPTY)
這是我的代碼:
用戶
class User implements UserInterface, \Serializable {
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
//other fields
/**
* @ORM\ManyToMany(targetEntity="Role", inversedBy="users")
*
*/
private $roles;
public function __construct()
{
$this->roles = new ArrayCollection();
}
//....
public function getRoles()
{
return $this->roles->toArray();
}
//....
}
角色
class Role implements RoleInterface{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id()
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(name="name", type="string", length=30)
*/
private $name;
/**
* @ORM\Column(name="role", type="string", length=20, unique=true)
*/
private $role;
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="roles")
*/
private $users;
public function __construct()
{
$this->users = new ArrayCollection();
}
/**
* @see RoleInterface
*/
public function getRole()
{
return $this->role;
}
}
和計件代碼控制器
$em = $this->getDoctrine()->getManager();
$form = $this->createForm(new RegisterType);
$form->handleRequest($Request);
if($form->isValid()){
$formData=$form->getData();
if($formData['password']==$formData['repeatpassword']){
$factory = $this->get('security.encoder_factory');
$user = new User();
$encoder = $factory->getEncoder($user);
$user->setSalt(md5(time()));
$pass = $encoder->encodePassword($formData['password'], $user->getSalt());
$user->setEmail($formData['email']);
$user->setPassword($pass);
$user->setActive(1);
$user->setName($formData['name']);
$user->setSurname($formData['surname']);
$user->setCountry($formData['country']);
$user->setBirthdate($formData['birthdate']);
$user->setCity($formData['city']);
$user->setBirthdate($formData['birthdate']);
$user->setAddress($formData['address']);
$user->setPhone($formData['phone']);
$user->setZipcode($formData['zipcode']);
$em = $this->getDoctrine()->getEntityManager();
$em->persist($user);
$em->flush();
}
我如何添加角色到用戶的?我想在參數中給出角色的id或名稱。
我的表單和查詢添加了用戶的作品...我知道這不是完美的,我會在這方面努力。目前我遇到添加用戶角色的問題。添加用戶後,我的基本user_role爲空。問題是,除了用戶和他的角色之外,如何改進添加的代碼。 – viko
@viko我會照顧他先說的,它會讓你的生活和我們的生活更輕鬆,使它更簡單,幫助你,讓你的問題變得更簡單。 – Tek
@viko你的問題和我的答案有你需要的所有信息,使你的應用程序以你想要的方式工作。如果您無法從所提供的信息中理解,那麼您可能不瞭解實體如何在Symfony中工作,因此我建議您閱讀[關於數據庫和原則的文檔](http://symfony.com/ DOC /電流/電子書/ doctrine.html)。 –