配置une界面管理
配置une界面管理
L'ajout des prochaines conférences à la base de données est le travail des admins du project。一个接口学院Est une节protégée du网站网站où les项目管理Peuvent gérer les données du site web, modérer les commentaires, et + encore。
评论pouvons-nous le créer aussi rapidement ?En utilisant un包有能力de générer une界面d'管理basée sur la结构du项目。EasyAdmin方便parfaitement。
安装程序des dépendances supplémentaires
Même si le包webapp
ajouté automatiquement de nombreux packages utiles, pour des fonctionnalités + spécifiques, nous devons ajouter d'autres dépendances ?用作曲家。En plus des paquets«标准»de Composer, nous travaillerons avec dedepaquets«spéciaux»:
- Composants ob娱乐下载Symfony: Paquets qui implémentent les fonctionnalités de base et les abstractions de bas niveau don la plupart des applications ont besoin(路由,控制台,客户端HTTP,邮件,缓存等);
- 包Symfonyob娱乐下载:牌坊fonctionnalités上天堂下天堂intégrations上天堂bibliothèques三层(les bundles sont principalement créés par la communauté)。
Ajoutez EasyAdmin comme dépendance du projet:
1
$ob娱乐下载交响乐作曲家要求“管理:^ 4”
管理
Est UN别名pour le paqueteasycorp / easyadmin-bundle
.
莱斯别名ne sont pas une fonctionnalité internne à作曲家,mais un concept fourni par Symfonob娱乐下载y pour vous faciliter la vie。“作曲家的别名sont des racacourcis pour Les paquets populaires de Composer”。你有什么申请吗?Demandezorm
.Vous vouz développer une API ?Demandezapi
.Ces别名字体référence à un ou plusieurs paquets normaux de Composer。仲裁事实之选择équipe裁决原则。ob娱乐下载
Un autre détail intéressant est que vous pouvez toujours metrtre le ob娱乐下载symfony du nom de paques。Demandez缓存
Au lieu deob娱乐下载symfony /缓存
.
提示
Vous souvenez-vous que nous avons mentionné un plugin Composer nomméob娱乐下载symfony / flex
?Les alias sont l 'une de ses fonctionnalités。
配置EasyAdmin
EasyAdmin crée automatiquement une section d'administration pour votre application basée sur des contrôleurs spécifiques。
倒débuter avec EasyAdmin, commençons par générer un“tableau de bord 'administration”qui sera le point d'entrée principal倒gérer les données du site。
1
$ob娱乐下载Symfony控制台make:admin:dashboard
接受者les réponses par défaut crée le contrôleur suivant:
Par convention, les contrôleurs d'administration sont stockés dans leur propre espace de nom应用程序控制器\ \管理
.
Accédez à l'interface d'administration générée grâce à l'URL/管理
告诉que configurée par la méthodeindex ()
(vous pouvez修饰语l'URL comme bon vous semble):
繁荣!Nous avons une belle interface d'administration, prête à être adaptée à nos besoins。
L'étape suivante consistent à créer des contrôleurs pour gérer les conférences et les commentaires。
dan le contrôleur du tableau de bord, vous avez peut-être remarqué la méthodeconfigureMenuItems ()
关于大陆评论à关于“crud”留置权的问题。“CRUD”est un首字母缩写pour“创建,读取,更新和删除”,les quatre opérations de base que vous allez effectuer sur une entité。这是一种精确的管理方法。EasyAdmin便利返场加les选择en prenant en charge les fonctionnalités de过滤et de研究。
Générons un CRUD pour les conférences:
1
$ob娱乐下载Symfony控制台make:admin:crud
Selectionnez1
倒créer une interface d'administration Pour les conférences et utiliser les valeurs par défaut倒les autres questions。Le fichier suivant devrait être généré:
Faites la même选择pour les commentaires:
1
$ob娱乐下载Symfony控制台make:admin:crud
La dernière étape consistent à relier les CRUDs d'administration des conférences et des commentaires au tableau de borau:
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22
——/ src /控制器/ Admin / DashboardController.php+ + + b / src /控制器/ Admin / DashboardController.php@@ -2,6 +2,8 @@名称空间的应用程序控制器\ \管理;+使用App \实体\评论;+使用App \实体\会议;使用包EasyCorp \ \ EasyAdminBundle \ Config \仪表板;使用包EasyCorp \ \ EasyAdminBundle \ Config \子菜单;控制器使用EasyCorp \包\ EasyAdminBundle \ \ AbstractDashboardController;@@类DashboardController扩展AbstractDashboardController公共函数configuremuitems():可迭代{- yield MenuItem::linkToDashboard('Dashboard', 'fa fa-home');- // yield MenuItem::linkToCrud('The Label', 'fas fa-list', EntityClass::class);+ yield MenuItem::linktoRoute('回到网站','fas fa-home', '首页');+ yield MenuItem::linkToCrud('会议','fas fa-map-marker-alt',会议::类);+ yield MenuItem::linkToCrud('Comments', 'fas fa-comments', Comment::class);}}
Nous avons surchargé la méthodeconfigureMenuItems ()
倒ajouter les éléments de menu avec les icônes adéquates Pour les conférences et les commentaires, et Pour ajouter UN lien de reour vers la page d'accueil du site。
EasyAdmin暴露une API pour faciliter les liaisons avec les CRUDs des entités via la méthode子菜单:linkToRoute ()
.
这是最重要的时刻。这是一种统计,是一种有针对性的信息。Comme nous n'avons rien d'important à y afficher, rerigeons cette page vers la liste des conférences:
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22
——/ src /控制器/ Admin / DashboardController.php+ + + b / src /控制器/ Admin / DashboardController.php@@ -7,6 +7,7 @@使用App\Entity\Conference;使用包EasyCorp \ \ EasyAdminBundle \ Config \仪表板;使用包EasyCorp \ \ EasyAdminBundle \ Config \子菜单;控制器使用EasyCorp \包\ EasyAdminBundle \ \ AbstractDashboardController;路由器+使用EasyCorp \包\ EasyAdminBundle \ \ AdminUrlGenerator;组件使用ob娱乐下载Symfony \ \ HttpFoundation \反应;使用Syob娱乐下载mfony \组件\路由\注释\路线;@@ -15,7 +16,10 @@ class DashboardController extends AbstractDashboardController #[路由('/admin',名称:'admin')]公共函数索引():Response {- return parent::index();+ $routeBuilder = $this->container->get(AdminUrlGenerator::class);+ $url = $routeBuilder->setController(ConferenceCrudController::class)->generateUrl();++返回$this->重定向($url);//选项1。您可以使仪表板重定向到后端//的一些公共页面
自由关系entités (la conférence liée à un commentaire), EasyAdmin essaie d'utiliser la représentation textuelle de la conférence。para défaut, il s'appuie sur une convention qui utilise le nom de l'entité et la clé primaire (para example)会议# 1
) si l'entité ne définit pas la méthode“魔术”__toString ()
.Pour rendre l'affichage + parlant, ajoutez cette méthode sur la class会议
:
12 3 4 5 6 7 8 9 10 11 12 13 14
——/ src /实体/ Conference.php+ + + b / src /实体/ Conference.php@@ -32,6 +32,11 @@ class Conference $this->comments = new ArrayCollection();}+公共函数__toString():字符串+ {+返回$this->城市。“。$ this - >;+}+公共函数getId(): ?int{返回$this->id;
Faites de même pour la class评论
:
12 3 4 5 6 7 8 9 10 11 12 13 14
——/ src /实体/ Comment.php+ + + b / src /实体/ Comment.php@@ -33,6 +33,11 @@ class注释#[ORM\列(长度:255,nullable: true)] private ?string $photoFilename = null;+公共函数__toString():字符串+ {+ return (string) $this->getEmail();+}+公共函数getId(): ?int{返回$this->id;
Vous pouvez维护者/修改者/供应商conférences指示代理管理。我们的天堂和天堂conférence。
Ajoutez quelques commentaires无照片。Réglez la date manuelement pour l'instant;这是我的杰作createdAt
自动丹恩étape ultérieure。
Personnaliser EasyAdmin
L'interface d'administration par défaut fontionne bien, mais elle peut être personnalisée de plusieurs façons pour améliorer son utilisation。Faisons quelques changements simples pour montrer quelques possibilités:
12 34 56 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
——/ src /控制器/ Admin / CommentCrudController.php+ + + b / src /控制器/ Admin / CommentCrudController.php@@ -3,7 +3,15 @@名称空间的应用程序控制器\ \管理;使用App \实体\评论;+使用EasyCorp \ \ EasyAdminBundle \ Config \ Crud捆绑销售;+使用包EasyCorp \ \ EasyAdminBundle \ Config \过滤器;控制器使用EasyCorp \包\ EasyAdminBundle \ \ AbstractCrudController;+使用EasyCorp \包\ EasyAdminBundle \ \ AssociationField领域;+使用EasyCorp \包\ EasyAdminBundle \ \ DateTimeField领域;+使用EasyCorp \包\ EasyAdminBundle \ \ EmailField领域;+使用EasyCorp \包\ EasyAdminBundle \ \ TextareaField领域;+使用EasyCorp \ \ EasyAdminBundle \字段\ TextField捆绑销售;+使用EasyCorp \包\ EasyAdminBundle \滤波器\ EntityFilter;类CommentCrudController extends AbstractCrudController{@@ -12,14 +20,44 @@类CommentCrudController extends AbstractCrudController return Comment::类;}- / *+公共函数configurerd (Crud $ Crud): Crud+ {+返回$crud+ ->setEntityLabelInSingular('Conference Comment')+ -> setentitylabelin复数('会议评论')+ ->setSearchFields(['author', 'text', 'email'])+ ->setDefaultSort(['createdAt' => 'DESC'])+;+}++公共函数configureFilters(Filters $ Filters):过滤器+ {+返回$filters+ - - - - - - >添加(EntityFilter::新(会议))+;+}+公共函数configureFields(字符串$pageName):可迭代{-返回[- IdField::新(id),——文本框::新(“标题”),- TextEditorField::新(描述),-);+ yield AssociationField::new('conference');+ yield TextField::new('author');+ yield EmailField::new('email');textareaffield::new('text')+ - > hideOnIndex ()+;TextField::new('photoFilename')+ - > onlyOnIndex ()+;++ $createdAt = DateTimeField::new('createdAt')->setFormTypeOptions([+ 'html5' => true,+ 'years' => range(日期('Y'),日期('Y') + 5),+ 'widget' => 'single_text',+));+ if (Crud::PAGE_EDIT === $pageName) {+ yield $createdAt->setFormTypeOption('disabled', true);+}其他{+ yield $createdAt;+}}- * /}
倒个人香水Commentaire
, lister les champs de manière explicit dans la méthodeconfigureFields ()
永远的常识和日常生活的常识。当然冠军bénéficient d'une配置supplémentaire, comme masquer le champ texte sur la page d'index。
Les方法configureFilters ()
Définissent quels filters apparaissent au dessus du champ de recherche。
Ces personalizations one sont qu'une petite introduction aux possibilités提供par EasyAdmin。
Jouez avec l'interface d'administration, filtrez les commentaires par conférence, ou recherchez des commentaires par email par example。Le seul problème, c'est que n'import qui peut accéder à cette接口。Ne vous inquiétez pas, nous la sécuriserons dans une prochaine étape。
1
$ob娱乐下载Symfony运行PSQL -c“截断会议重新启动身份级联”