我对 Symfony 真的很陌生,我正在尝试使用 FosUserBundle 向用户注册角色,但我无法管理如何做到这一点。
实际上,我还集成了 PUGXMultiUserBundle,以便为两个不同的角色提供两种不同的形式。
谁能帮我?
提前致谢
- 更新 -
我报告我的代码以便清楚地解释。我按照以下指南创建了这个文件PUGX多用户捆绑包 https://github.com/PUGX/PUGXMultiUserBundle/blob/master/Resources/doc/index.md#7-using-the-user-manager
这是我的实体:
//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');
}
}
很抱歉问了这个愚蠢的问题,但这是我的第一个项目,我觉得有点不对劲。
--更新--已解决--
我找到了解决方案here https://stackoverflow.com/questions/19321146/how-to-assign-roles-on-successful-registration抱歉,这个问题有点多余,我没有通过谷歌找到它。
向用户分配角色(例如 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");
}
请记住,在构造函数中设置角色意味着它就是这样not保存在数据库中(除非您坚持并刷新)并且它适用于每个用户。
如果您还有其他问题,请告诉我。
PS:如果您使用 Sonata Admin 捆绑包,则可以使用“管理”部分中的表单设置用户角色
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)