2013-12-18 55 views
5

我對Symfony真的很陌生,我試圖用FosUserBundle註冊一個用戶角色,但我無法管理如何去做。 其實我也整合PUGXMultiUserBundle爲了有兩個不同的角色兩種不同的形式。 任何人都可以幫助我嗎?用FosUserBundle指定角色

在此先感謝

--UPDATE--

我爲了清楚地解釋報告我的代碼。我創建的PUGXMultiUserBundle

引導這個文件,這是我的實體:

//C:\BitNami\wampstack-5.4.23-0\frameworks\symfony\src\Acme\ManagementBundle\Entity\UserGroundStation.php 
<?php 

namespace Acme\ManagementBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use PUGX\MultiUserBundle\Validator\Constraints\UniqueEntity; 

/** 
* @ORM\Entity 
* @ORM\Table(name="user_GroundStation") 
* @UniqueEntity(fields = "username", targetClass = "Acme\ManagementBundle\Entity\User", message="fos_user.username.already_used") 
* @UniqueEntity(fields = "email", targetClass = "Acme\ManagementBundle\Entity\User", message="fos_user.email.already_used") 
*/ 
class UserGroundStation extends User 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 
} 

這是控制器

C:\BitNami\wampstack-5.4.23-0\frameworks\symfony\src\Acme\ManagementBundle\ControllerRegistrationController.php 
<?php 

namespace Acme\ManagementBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 

class RegistrationController extends Controller 
{ 
    public function registerUserGroundStationAction() 
    { 
     return $this->container 
        ->get('pugx_multi_user.registration_manager') 
        ->register('Acme\ManagementBundle\Entity\UserGroundStation'); 
    } 
} 

對不起,愚蠢的問題,但它是我的第一個項目,我感覺有點不妥。

--update - SOLVED--

我找到了解決辦法here 對不起,這個問題的冗餘,我沒有由谷歌找到它。

回答

10

將角色(例如ROLE_ADMIN)分配給用戶的方法如下所示。

//Get the enity manager 
$em = $this->getDoctrine()->getManager(); 
//Get the user with name admin 
$user= $em->getRepository("<your vendor>\<your bundle>\Entity\User")->findBy(Array("name" => "admin")); 
//Set the admin role 
$user->addRole("ROLE_ADMIN"); 
//Save it to the database 
$em->persist($user); 
$em->flush(); 

您還可以設置在用戶實體類的構造函數的作用,它是這樣的:

public function __construct() 
{ 
    parent::__construct(); 
    $this->addRole("ROLE_ADMIN"); 
} 

請記住,設置構造函數中的角色意味着事實就是保存在數據庫中(除非你的持久和刷新),並且它適用於每個用戶。
如果您還有其他問題,請告訴我。

PS:如果你使用的索納塔管理員捆綁用戶的角色可以與位於Admin部分

相關問題