You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. # Laclic LcAdminBundle
  2. Administration basé sur EasyAdmin 3. Développé par <a href="https://www.laclic.fr">la Clic!</a>
  3. Require :
  4. - Symfony > 5.3
  5. - EasyAdmin > 5.3
  6. - FOS/Ckeditor-bundle: "^2.2",
  7. ## Instalation en version développement sur un projet :
  8. Si tu démarres un nouveau projet il te suffit de cloner le projet : https://gitea.laclic.fr/Laclic/DefaultProjectSf5
  9. - À la racine de ton projet créer un dossier Lc/AdminBundle/
  10. - Dans le dossier Lc/AdminBundle :
  11. ```
  12. git clone https://gitea.laclic.fr/Laclic/AdminBundle.git .
  13. ```
  14. - Enjoy !
  15. ### Pour les projet Aquarium, Laclic, Le plat pentu (et peut être d'autres) suit cette préocédure :
  16. - Compare ton .gitignore avec le gitignore de DefaultProjectSf5 et ajoute les lignes manquantes
  17. - Modifier composer.json dans “autoload” ajouter :
  18. ````
  19. "autoload": {
  20. "psr-4": {
  21. "App\\": "src/",
  22. "Lc\\": "Lc/"
  23. }
  24. },
  25. ````
  26. - Dans le dossier `config` de ton projet :
  27. - Modifier `bundles.php` et ajouter :
  28. ````
  29. Lc\AdminBundle\LcAdminBundle::class => ['all' => true],
  30. ````
  31. - Modifier `services.yaml` et ajouter :
  32. ````
  33. Lc\AdminBundle\:
  34. resource: '../Lc/AdminBundle/'
  35. exclude:
  36. - '../Lc/AdminBundle/DependencyInjection/'
  37. - '../Lc/AdminBundle/Entity/'
  38. - '../Lc/AdminBundle/Kernel.php'
  39. - '../Lc/AdminBundle/Tests/'
  40. ````
  41. et
  42. ````
  43. Lc\AdminBundle\Controller\:
  44. resource: '../Lc/AdminBundle/Controller/'
  45. tags: ['controller.service_arguments']
  46. ````
  47. - Modifier `packages/security.yml`
  48. ````
  49. guard:
  50. authenticators:
  51. - Lc\AdminBundle\Authenticator\LoginFormAuthenticator
  52. ````
  53. - Modifier `packages/doctrine.yaml`
  54. ````
  55. resolve_target_entities:
  56. Lc\AdminBundle\IModel\User\UserInterface: App\Entity\User
  57. ````
  58. - Modifier `routes.yaml`
  59. ````
  60. login:
  61. path: /login
  62. controller: Lc\AdminBundle\Controller\Admin\SecurityController::login
  63. logout:
  64. path: /logout
  65. controller: Lc\AdminBundle\Admin\SecurityController::logout
  66. ````
  67. - Dans le dossier `src/` de ton projet :
  68. - Supprimer `Controller/Admin/SecurityController.php`.
  69. - Supprimer `Controller/Admin/AbstractCrudController.php`.
  70. - Modifier l'en tête de `Controller/Admin/DashboardController.php`.
  71. ````
  72. use Lc\AdminBundle\Controller\Admin\DashboardController as LcDashboardController;
  73. class DashboardController extends LcDashboardController
  74. {
  75. // ... le code spécifique
  76. }
  77. ````
  78. - Modifier l'en tête des controllers. Exemple `Controller/Admin/PageCrudController.php`.
  79. ````
  80. use Lc\AdminBundle\Controller\Admin\AbstractCrudController;
  81. class PageCrudController extends AbstractCrudController
  82. {
  83. // ... le code spécifique
  84. }
  85. ````
  86. - Modifier `Entity/User.php`.
  87. ````
  88. <?php
  89. namespace App\Entity;
  90. use Doctrine\ORM\Mapping as ORM;
  91. use Lc\AdminBundle\IModel\User\UserInterface;
  92. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  93. use Lc\AdminBundle\Model\User\User as LcUserModel;
  94. /**
  95. * @ORM\Entity(repositoryClass="Lc\AdminBundle\Repository\User\UserRepository")
  96. * @UniqueEntity(fields={"email"}, message="There is already an account with this email")
  97. */
  98. class User extends LcUserModel implements UserInterface
  99. {
  100. /**
  101. * @ORM\Id
  102. * @ORM\GeneratedValue
  103. * @ORM\Column(type="integer")
  104. */
  105. private $id;
  106. public function getId(): ?int
  107. {
  108. return $this->id;
  109. }
  110. }
  111. ````
  112. - Modifier les entités pour que les Use pointe dans AdminBundle exemple avec `Entity/Page.php`.
  113. ````
  114. use Lc\AdminBundle\IModel\Cms\ImageInterface;
  115. use Lc\AdminBundle\Model\Cms\AbstractDocument;
  116. use Lc\AdminBundle\Model\Cms\ImageTrait;
  117. /**
  118. * @ORM\Entity(repositoryClass=PageRepository::class)
  119. */
  120. class Page extends AbstractDocument implements ImageInterface
  121. {
  122. use ImageTrait;
  123. // ... le code spécifique
  124. }
  125. ````
  126. - Modifier les repository pour qu'il fonctionne avec AdminBundle exemple avec `Repository/PageRepository.php.php`.
  127. ````
  128. <?php
  129. namespace App\Repository;
  130. use App\Entity\Page;
  131. use Lc\AdminBundle\Repository\BaseRepository;
  132. /**
  133. * @method Page|null find($id, $lockMode = null, $lockVersion = null)
  134. * @method Page|null findOneBy(array $criteria, array $orderBy = null)
  135. * @method Page[] findAll()
  136. * @method Page[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  137. */
  138. class PageRepository extends BaseRepository
  139. {
  140. public function getInterfaceClass()
  141. {
  142. return Page::class;
  143. }
  144. // ... le code spécifique
  145. }
  146. ````
  147. - Supprimer `Repository/UserRepository.php.php`.
  148. Sauf si il contient des fonctions autres que `__contruct()` et `upgradePassword-()`
  149. Si c'est le cas le réécrire en faisant un extends de UserRepository dans AdminBundle
  150. - Faire un `composer install`
  151. - Tester l'application connectes toi à l'admin, édites un doc ou deux
  152. - Si tout est ok tu peux supprimer les dossiers :
  153. ````
  154. src/IModel/
  155. src/Model/
  156. src/Security/
  157. src/Command/