<?php
namespace App\Controller\Admin;
use App\Admin\Field\FileField;
use App\Entity\Media;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
use EasyCorp\Bundle\EasyAdminBundle\Config\Filters;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use EasyCorp\Bundle\EasyAdminBundle\Filter\ChoiceFilter;
use Vich\UploaderBundle\Form\Type\VichFileType;
class MediaCrudController extends AbstractCrudController
{
public static function getEntityFqcn(): string
{
return Media::class;
}
public function configureCrud(Crud $crud): Crud
{
return $crud;
}
public function configureFilters(Filters $filters): Filters
{
return $filters
->add(
ChoiceFilter::new('type')
->setChoices([
'Image' => Media::IMAGE_TYPE,
'Video' => Media::VIDEO_TYPE,
'Audio' => Media::AUDIO_TYPE,
])
);
}
public function configureFields(string $pageName): iterable
{
yield FileField::new('fileName', 'bo.medias.field.file')
->setBasePath($this->get('parameter_bag')->get('app.url.media'))
->hideOnForm();
yield TextField::new('file', 'bo.medias.field.file')
->setFormType(VichFileType::class)
->setFormTypeOptions([
'allow_delete' => false,
'attr' => [
'accept' => implode(',', Media::UPLOAD_MIMES),
],
])
->setRequired(true)
->onlyOnForms();
}
}