forked from EasyCorp/EasyAdminBundle
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCrudControllerInterface.php
More file actions
95 lines (71 loc) · 3.37 KB
/
CrudControllerInterface.php
File metadata and controls
95 lines (71 loc) · 3.37 KB
1
2
3
4
5
6
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
namespace EasyCorp\Bundle\EasyAdminBundle\Contracts\Controller;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\QueryBuilder;
use EasyCorp\Bundle\EasyAdminBundle\Collection\FieldCollection;
use EasyCorp\Bundle\EasyAdminBundle\Collection\FilterCollection;
use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
use EasyCorp\Bundle\EasyAdminBundle\Config\Assets;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
use EasyCorp\Bundle\EasyAdminBundle\Config\Filters;
use EasyCorp\Bundle\EasyAdminBundle\Config\KeyValueStore;
use EasyCorp\Bundle\EasyAdminBundle\Context\AdminContext;
use EasyCorp\Bundle\EasyAdminBundle\Contracts\Field\FieldInterface;
use EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto;
use EasyCorp\Bundle\EasyAdminBundle\Dto\SearchDto;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
/**
* @author Javier Eguiluz <javier.eguiluz@gmail.com>
*
* @template TEntity of object
*/
interface CrudControllerInterface
{
/**
* @return class-string<TEntity>
*/
public static function getEntityFqcn(): string;
public function configureCrud(Crud $crud): Crud;
public function configureAssets(Assets $assets): Assets;
public function configureActions(Actions $actions): Actions;
public function configureFilters(Filters $filters): Filters;
/**
* @return FieldInterface[]|string[]
*
* @psalm-return iterable<FieldInterface|string>
*/
public function configureFields(string $pageName): iterable;
/** @return KeyValueStore|Response */
public function index(AdminContext $context);
/** @return KeyValueStore|Response */
public function detail(AdminContext $context);
/** @return KeyValueStore|Response */
public function edit(AdminContext $context);
/** @return KeyValueStore|Response */
public function new(AdminContext $context);
/** @return KeyValueStore|Response */
public function delete(AdminContext $context);
public function autocomplete(AdminContext $context): JsonResponse;
public function configureResponseParameters(KeyValueStore $responseParameters): KeyValueStore;
public function createIndexQueryBuilder(SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters): QueryBuilder;
public function createEntity(string $entityFqcn);
/**
* @param TEntity $entityInstance
*/
public function updateEntity(EntityManagerInterface $entityManager, $entityInstance): void;
/**
* @param TEntity $entityInstance
*/
public function persistEntity(EntityManagerInterface $entityManager, $entityInstance): void;
/**
* @param TEntity $entityInstance
*/
public function deleteEntity(EntityManagerInterface $entityManager, $entityInstance): void;
public function createEditFormBuilder(EntityDto $entityDto, KeyValueStore $formOptions, AdminContext $context): FormBuilderInterface;
public function createEditForm(EntityDto $entityDto, KeyValueStore $formOptions, AdminContext $context): FormInterface;
public function createNewFormBuilder(EntityDto $entityDto, KeyValueStore $formOptions, AdminContext $context): FormBuilderInterface;
public function createNewForm(EntityDto $entityDto, KeyValueStore $formOptions, AdminContext $context): FormInterface;
}