<?php
namespace App\Controller\Admin;
use App\Entity\Article;
use Doctrine\ORM\EntityManagerInterface;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
use EasyCorp\Bundle\EasyAdminBundle\Field\ImageField;
use EasyCorp\Bundle\EasyAdminBundle\Field\IntegerField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextareaField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField;
use Knp\Component\Pager\PaginatorInterface;
use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
class ArticleCrudController extends AbstractCrudController
{
public static function getEntityFqcn(): string
{
return Article::class;
}
public function configureActions(Actions $actions): Actions
{
$actions->add(Crud::PAGE_INDEX, Action::DETAIL)
->update(Crud::PAGE_NEW, Action::SAVE_AND_RETURN, function (Action $action) {
return $action->setLabel('Enregistrer');
});
return $actions;
}
public function configureCrud(Crud $crud): Crud
{
return $crud->setPageTitle('index', 'Articles');
}
public function configureFields(string $pageName): iterable
{
return [
TextField::new('titre'),
NumberField::new('prix')->setFormTypeOptions(["attr" => ['min' => '0','pattern'=>'[0-9]+', 'oninput'=>"this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"]])->setRequired(true),
NumberField::new('quantite')->setFormTypeOptions(["attr" => ['min' => '0','pattern'=>'[0-9]+', 'oninput'=>"this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"]])->setRequired(true),
TextareaField::new('description'),
ImageField::new('image', 'Photo')->setUploadDir('public/imagees/galery')->setBasePath('imagees/galery')->setUploadedFileNamePattern('[randomhash].[extension]')->setRequired($pageName !== Crud::PAGE_EDIT)
->setFormTypeOptions(["attr" => ['accept' => 'image/*']]),
ImageField::new('extrait')->setUploadDir('/public/upload/galerie/images')->setBasePath('upload/galerie/images')->setUploadedFileNamePattern('[randomhash].[extension]')
->setFormTypeOptions(["attr" => ['accept' => 'image/*, application/pdf, application/vnd.ms-excel']])
->setTemplatePath('admin/fields/vich_uploader_pdf.html.twig')->setRequired($pageName !== Crud::PAGE_EDIT),
];
}
#[Route('/show/article/detail/{id}', name: 'show_article_detail')]
public function showByArticleDetail(Article $article, Request $request, EntityManagerInterface $entityManager): Response
{
return $this->render('article/detail.html.twig', [
'article'=>$article,
]);
}
#[Route('/list/article/index/', name: 'index_article')]
public function listServices(Request $request, EntityManagerInterface $entityManager, PaginatorInterface $paginator): Response
{
$donnees = $entityManager->getRepository(Article::class)->findAll();
$articles = $paginator->paginate(
$donnees,
$request->query->getInt('page', 1),
10
);
return $this->render('article/index.html.twig', [
'articles'=>$articles,
]);
}
// #[Route('/', name: 'show_articles')]
// public function showArticle(Request $request, EntityManagerInterface $entityManager): Response {
// $article = $entityManager->getRepository(Article::class)->findAll();
// return $this->render('accueil/accueil.html.twig', [
// 'articles'=>$article
// ]);
// }
}