Создание админист т атив ан но па анели
Создание админист т атив ан но па анели
Именноадминистраторыпроектабудутдобавлятьпредстоящиеконференциивбазуданных。Административнаяпанель- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -администраторыпроектамогутизменятьданны,емодерироватьотзывыимногоедругое。
Можнобыстросгенерироватьпанельадминистрированиянабаземоделипроекта,используяодинизбандлов。EasyAdmin как раз то, то нам нужно。
Установка дополнител а а а - исимосте т
Пакетwebapp
автоматическидобавилмногоразныхпакетов,нодлянужногофункционаланужнодобавитьбольшезависимостей。Как т то сделат ?С помощью作曲家。”Помимообычных”пакетов作曲家,мыбудемработатьсдвумя”специальными”видамипакетов:
- 欧宝娱乐app下载地址Symfony组件:Пакеты,реализующиеосновныефункциииабстракциинизкогоуровня,которыенеобходимыбольшинствуприложений(маршрутизация,консоль,HTTP -клиен,тпочтовыйклиент,кеш,…);
- 欧宝娱乐app下载地址Symfony包:Пакеты,которыедобавляютвысокоуровневыевозможностиилиобеспечиваютинтеграциюсостороннимибиблиотеками(пакетывосновномсоздаютсясообществом)。
ДавайтедобавимбандлEasyAdminвзависимостипроекта:
1
$欧宝娱乐app下载地址交响乐作曲家要求“管理:^ 4”
管理
- т то псевдоним дл пакетаeasycorp / easyadmin-bundle
.
Псевдонимы——этонефункция作曲家аконцепция,предоставленнаяSymfonyдляобл欧宝娱乐app下载地址егченияразработки。Псевдонимы——этоярлыкидляпопулярныхпакетов作曲家。Хотите orm дл ва л е о о приложения?Укажитеorm
.Хотите аз з а аб бо отат api ?Укажитеapi
.Псевдонимыавтоматическипреобразуютсяводинилинесколькообычныхпакетов作曲家。Это в ор о о о о ел ланн ор осно овно к欧宝娱乐app下载地址омандо о Symfony。
Другаяприятнаяособенность,чтовыможетенеуказыватьимявендора欧宝娱乐app下载地址
.Укажите缓存
вместо欧宝娱乐app下载地址symfony /缓存
.
提示
,Помнитемыужеупоминалиоплагин作曲家еподназванием欧宝娱乐app下载地址symfony / flex
?Псевдонимы - одна из е р особ о ос н ен。
Настройка бандла EasyAdmin
EasyAdminавтоматическигенерируетадмин——панельизопределённыхконтроллероввприложении。
НачнёмработусEasyAdminссоздания”административнойпанели”,котораябудетслужитглавнойотправнойточкойдляуправленияданнымисайта:
1
$欧宝娱乐app下载地址Symfony控制台make:admin:dashboard
Длясозданияконтролераиспользуйтеответыпоумолчанию:
Посоглашениювсеконтроллеры,относящиесякадмин——панели,определяютсявсобственномпространствеимён应用程序控制器\ \管理
.
Чтобыпосмотретьсозданнуюадминистративнуюпанельвбраузереперейдитепопути/管理
, кото ор б б л за а ан в методеindex ()
.Вы можете изм менит пу у у у у у у у у на л о бо у у у о о в:
Вуаля!Унасестьсимпатичнаяадминистративнаяпанель,которуюможнонастроитькаквамугодно。
Вследующемшагесоздадимконтроллерыдляуправленияконференциямиикомментариями。
Вконтроллереадминпанеливы,возможно,обратиливниманиенаметодconfigureMenuItems ()
,вкоторомзакомментированвызовметода,добавляющегоссылкуна“CRUD(действие”。CRUD——этоаббревиатураот“创建、读取、更新и删除”(“Создать,Прочитать,Обновить,Удалить”),четырёхосновныхопераций,которыеможнопроделатьнадлюбойсущностью。Этоименното,чтонамнужноотпанелиадминистрирования;ОднакоэтимEasyAdminнеограничивается——сегопомощьюещёможноискатьифильтроватьданные。
ДавайтесгенерируемCRUD -контроллердляконференций:
1
$欧宝娱乐app下载地址Symfony控制台make:admin:crud
Выберите1
,чтобысоздатьконтроллерсCRUD(действиямидляконференцийииспользуйтезначенияпоумолчаниюдлядругихвопросов。Результатом буде о следующий фа а л:
Сделайте то о о о дл комментариев:
1
$欧宝娱乐app下载地址Symfony控制台make:admin:crud
ОстаётсядобавитьновыеCRUD——интерфейсыконференцийикомментариеввадминпанель:
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);}}
Мы пере ределил методconfigureMenuItems ()
,вкоторомдобавилипунктыменюдляконференцийикомментариевссоответствующимииконками,атакжевсамоеначаломенюпоместилиссылкунаглавнуюстраницу。
С помощью С С троенно о о о о в EasyAdmin API-метода子菜单:linkToRoute ()
ле р ко созда а ат сс о лки на crud -сущности。
Главная ста а ани ла пока пуст。Внейвыможетеотобразитьразличнуюстатистикуилилюбуюсоответствующуюинформацию。Посколькуунаснетничегоподобного,тодобавимредиректнастраницусоспискомконференций:
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;组件使用欧宝娱乐app下载地址Symfony \ \ HttpFoundation \反应;使用Sy欧宝娱乐app下载地址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。您可以使仪表板重定向到后端//的一些公共页面
Приотображениисвязанныхсущностей(внашемслучае,конференции,прикреплённойккомментарию)EasyAdminпопытаетсяпреобразоватьобъектконференциивстроку。Есливобъектенебудетреализован“магический“метод__toString ()
,топоумолчаниюEasyAdminвыведетимяобъектавместеспервичнымключом(например,会议# 1
).Чтобысделатьназваниесвязаннойсущностиболеепонятнее,определимэтотметодвклассе会议
:
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;
То же сам мо о о дела а т те в класс评论
:
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;
Теперьвыможетедобавлять,изменятьиудалятьконференциинепосредственноизадминистративнойпанели。Изучитеегоинтерфейсидобавьтехотябыоднуконференцию。
Добавьте нес скол к ко комментариев без ф - ото аф - и к。Покаустановитедатувручную,затемвследующихшагахмысделаемавтозаполнениестолбцаcreatedAt
.
НастройкаEasyAdmin
Административнаяпанельпоумолчаниюработаетхорошо,хотяонаможетпо——разномунастраиваться,чтобыулучшитьудобствоеёиспользования。Внесемнесколькопростыхизмененийвсущность评论длядемонстрациинекоторыхвозможностей:
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;+}}- * /}
Чтобы настроит оит评论
,“зада а о т т т”,“зад до од о”configureFields ()
.Некоторыеполянастраиваютсядополнительно,например,скрытиетекстовогополянаглавнойстранице。
МетодыconfigureFilters ()
определяют,какиефильтрыбудутдоступнырядомсполемпоиска。
ЭтовсеголишьнебольшаячастьвозможныхнастроеквEasyAdmin。
Ознакомьтесьсадминистративнойпанелью,отфильтруйтекомментариипокакой——нибудьконференцииили,например,найдитеихпоадресуэлектроннойпочты。Однакоестьпоследняянеразрешённаяпроблема-любойпользовательможетвойтивпанельадминистрирования。Мы т то об зател но исп - а - им в следующих а а а。
1
$欧宝娱乐app下载地址Symfony运行PSQL -c“截断会议重新启动身份级联”