我在我的项目中使用 Symfony 5 和 EasyAdmin 3。
这是 CRUD 控制器的示例:
<?php
namespace App\Controller\Admin;
use App\Entity\Guide;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use EasyCorp\Bundle\EasyAdminBundle\Field\IdField;
use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
use EasyCorp\Bundle\EasyAdminBundle\Field\DateTimeField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextEditorField;
use EasyCorp\Bundle\EasyAdminBundle\Field\ImageField;
use EasyCorp\Bundle\EasyAdminBundle\Field\ArrayField;
use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
use Vich\UploaderBundle\Form\Type\VichImageType;
class GuideCrudController extends AbstractCrudController
{
public static function getEntityFqcn(): string
{
return Guide::class;
}
public function configureFields(string $pageName): iterable
{
if (Crud::PAGE_DETAIL === $pageName) {
$field = ArrayField::new('thematiques', 'Thématiques');
} else {
$field = AssociationField::new('thematiques', 'Thématiques');
}
return [
IdField::new('id')->hideOnForm(),
TextField::new('title', 'Titre'),
TextEditorField::new('description', 'Description'),
TextField::new('site_url', 'Url du Site'),
TextField::new('site_url_button_text', 'Texte du Button'),
TextField::new('slug', 'Slug')->hideOnIndex()->hideOnForm(),
ImageField::new('image_url', 'Image')
->setBasePath('images/guides')
->setUploadDir('public/images/guides')
->setRequired(false),
DateTimeField::new('created_at', 'Date Création')->onlyOnIndex(),
DateTimeField::new('updated_at', 'Date Modification')->onlyOnIndex(),
$field
];
}
public function configureActions(Actions $actions): Actions
{
return $actions
->add(Crud::PAGE_INDEX, Action::DETAIL)
->add(Crud::PAGE_EDIT, Action::INDEX)
->add(Crud::PAGE_NEW, Action::INDEX);
}
}
在 AssociationField 中,CSS 样式和 JS 行为默认由 EasyAdmin 提供。
但是,我想修改 CSS 以更改此表单小部件选择下拉列表的宽度并使其更大。
我还想修改默认情况下每次选择一个项目时关闭下拉菜单的 JS;因为我想让下拉菜单保持打开状态,并允许用户在下拉菜单中选择多个项目,而不会在每次单击一个项目时关闭选择菜单。我看到我们可以使用 event.stopPropagation() 和 event.preventDefault() 来做到这一点;但我不知道如何将自定义 JS 应用于 EasyAdmin 特定表单小部件。
有谁知道如何在 EasyAdmin 3 中自定义多个关联字段 select2 下拉列表的 CSS 和 JS?
提前致谢。