2 回答

TA贡献1966条经验 获得超4个赞
如果您使用的是FOS/user-bundle您可以授予用户角色,您可以创建自己的或使用预定义的(Admin 是预定义的)。 https://symfony.com/doc/2.0.x/bundles/FOSUserBundle/index.html
如果您真的想自己这样做,您可以拥有一个模型但不同的实例化是您将您的用户设置为是否具有角色的布尔值,然后在根据角色请求时创建一个新对象:
/**
* @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository")
* @ORM\Table(name="users")
*/
class User
{
/** @Column(name="`isApiUser`", type="boolean") */
private $isApiUser;
/** @Column(name="`isSiteUser`", type="boolean") */
private $isSiteUser;
/** @Column(name="`isAdminUser`", type="boolean") */
private $isAdminUser;
//....
public function getApiUser(): ?ApiUser
{
return $this->isApiUser() ? new ApiUser($this) : null;
}
public function getSiteUser(): SiteUser
{
return $this->isSiteUser() ? new SiteUser($this) : null;
}
public function getAdminUser(): ApiUser
{
return $this->isAdminUser() ? new AdminUser($this);
}
//....
}
然后让每个用户对象执行以下操作:
class ApiUser
{
private $userName;
public function __construct(User $user)
{
$this->userName = $user->getUserName();
// Continue for whatever logic you want
}
}
对每个用户类型执行相同的操作。
然后当你想在你的控制器(或任何地方)中使用它时
class SomeController extends Controller
{
public function indexAction()
{
$repository = $this->getDoctrine()->getRepository(User::class);
$user = $product = $repository->findOneBy([
'userName' => 'UserName',
'isApiUser' => true
]);
$apiUser = $this->getApiUser();
}
}
- 2 回答
- 0 关注
- 190 浏览
添加回答
举报