我有一个实体用户,它是我的实体的基础:超级管理员、管理员、客户。
我的实体用户:
#[ORM\Entity(repositoryClass: UserRepository::class)]
#[UniqueEntity('email', repositoryMethod: 'findByEmail')]
abstract class User extends IdEntity implements UserInterface,
private ?string $email = null;
private ?string $password = null;
private ?string $firstName = null;
private ?string $lastName = null;
}
用户的超级管理员、管理员和客户端扩展。我在 Client => 'city' 和 'zipcode' 中添加了 2 个属性。SuperAdmin 和 Admin 仅此而已
ROLES 和 ID 的设置不同,一切正常。当我创建管理员时,我的角色是“admin”,而客户端的角色是“client”。
在后台,我处理用户实体中的所有用户,但我想在编辑视图中添加来自客户端的 2 个属性,但我不知道如何管理它。
我的用户控制器:
<?php
declare(strict_types=1);
namespace App\Controller\Admin;
use App\Entity\Client;
use App\Entity\User;
use App\Field\AvatarChoiceField;
use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
use EasyCorp\Bundle\EasyAdminBundle\Field\EmailField;
use EasyCorp\Bundle\EasyAdminBundle\Field\FormField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TelephoneField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
class UserCrudController extends AbstractCrudController
{
public static function getEntityFqcn(): string
{
return User::class;
}
public function configureCrud(Crud $crud): Crud
{
return $crud
->setEntityLabelInSingular('admin.crud.user.label.singular')
->setEntityLabelInPlural('admin.crud.user.label.plural')
->setSearchFields(['firstName', 'lastName', 'email', 'phone'])
->setDefaultSort(['lastName' => 'ASC', 'firstName' => 'ASC', 'id' => 'ASC'])
;
}
public function configureFields(string $pageName): iterable
{
yield TextField::new('firstName', 'admin.crud.user.field.firstName')
->setColumns(4)
;
yield TextField::new('lastName', 'admin.crud.user.field.lastName')
->setColumns(4)
;
yield EmailField::new('email', 'admin.crud.user.field.email')
->setColumns(4)
;
//I've tried this way but no results
if (User::ROLE_CLIENT) {
yield TextField::new('city','admin.crud.user.field.city')
->setColumns(4)
->setFormTypeOptions(['validation_groups' => 'edit'])
;
yield TextField::new('zipcode','admin.crud.user.field.zipcode')
->setColumns(4)
->setFormTypeOptions(['validation_groups' => 'edit'])
;
}
}
}
所以我想在我的后台,如果我点击管理员,我可以编辑姓氏、电子邮件、名字,但如果我点击客户端,我可以编辑相同的属性 + 邮政编码和城市。
只有我(超级管理员)可以访问后台,因此“$this->getUser()”始终具有角色“super_admin”
任何想法 ?