|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- # Laclic SovBundle
-
- Administration basé sur EasyAdmin 3. Développé par <a href="https://www.laclic.fr">la Clic!</a>
-
- Require :
-
- - Symfony > 5.3
- - EasyAdmin > 5.3
- - FOS/Ckeditor-bundle: "^2.2",
-
- ## Instalation en version développement sur un projet :
-
- Si tu démarres un nouveau projet il te suffit de cloner le projet : https://gitea.laclic.fr/Laclic/DefaultProjectSf5
-
- - À la racine de ton projet créer un dossier Lc/AdminBundle/
- - Dans le dossier Lc/AdminBundle :
- ```
- git clone https://gitea.laclic.fr/Laclic/AdminBundle.git .
- ```
-
- - Initialisation :
- - Création des entités de base, créer une entité User.php et File.php, ajouter dans la configuration de doctrine les lignes suivantes
- ```
- doctrine:
- orm:
- resolve_target_entities:
- Lc\SovBundle\IModel\User\UserInterface: App\Entity\User
- Lc\SovBundle\Doctrine\Extension\FileInterface: App\Entity\File
- #...
- ```
-
- - Instalation ckeditor
- `php bin/console ckeditor:install`
- `php bin/console assets:install public
- - Créer la config fos_ckeditor.yaml
- ```
- fos_ck_editor:
- input_sync: true
- default_config: base_config
- configs:
- base_config:
- filebrowserBrowseRoute: file_manager
- filebrowserBrowseRouteParameters:
- conf: default
- module: ckeditor
- format_tags: 'p;h2;h3'
- toolbar:
- - { name: "styles", items: ['Bold', 'Italic','Underline', 'Strike']}
- - { name: "paragraph", items: ['Format', 'NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote'] }
- - { name: "link", items: [ 'Link', 'Unlink'] }
- - {name: 'insert', items: [ 'Image' ]}
- - {name: 'document', items: [ 'Source' ]}
- simple_config:
- toolbar:
- - { items: ['Bold', 'Italic', 'Underline', 'Colors', 'Source'] }
- twig:
- form_themes:
- - '@FOSCKEditor/Form/ckeditor_widget.html.twig'
-
-
- ```
- - Créer la config artgris_file_manager.yaml
- ```
- artgris_file_manager:
- conf:
- default:
- dir: "../public/uploads"
- type: 'image'
- ```
-
-
-
- - Enjoy !
-
- ### Pour les projet Aquarium, Laclic, Le plat pentu (et peut être d'autres) suit cette préocédure :
-
- - Compare ton .gitignore avec le gitignore de DefaultProjectSf5 et ajoute les lignes manquantes
-
- - Modifier composer.json dans “autoload” ajouter :
- ````
- "autoload": {
- "psr-4": {
- "App\\": "src/",
- "Lc\\": "Lc/"
- }
- },
- ````
- - Dans le dossier `config` de ton projet :
- - Modifier `bundles.php` et ajouter :
- ````
- Lc\SovBundle\SovBundle::class => ['all' => true],
- ````
- - Modifier `services.yaml` et ajouter :
- ````
- Lc\SovBundle\:
- resource: '../Lc/AdminBundle/'
- exclude:
- - '../Lc/AdminBundle/DependencyInjection/'
- - '../Lc/AdminBundle/Entity/'
- - '../Lc/AdminBundle/Kernel.php'
- - '../Lc/AdminBundle/Tests/'
- ````
- et
- ````
- Lc\SovBundle\Controller\:
- resource: '../Lc/AdminBundle/Controller/'
- tags: ['controller.service_arguments']
- ````
- - Modifier `packages/security.yml`
- ````
- guard:
- authenticators:
- - Lc\SovBundle\Authenticator\LoginFormAuthenticator
- ````
- - Modifier `packages/doctrine.yaml`
- ````
- resolve_target_entities:
- Lc\SovBundle\IModel\User\UserInterface: App\Entity\User
- ````
- - Modifier `routes.yaml`
- ````
- login:
- path: /login
- controller: Lc\SovBundle\Controller\Admin\SecurityController::login
- logout:
- path: /logout
- controller: Lc\SovBundle\Admin\SecurityController::logout
- ````
-
- - Dans le dossier `src/` de ton projet :
- - Supprimer `Controller/Admin/SecurityController.php`.
- - Supprimer `Controller/Admin/AbstractCrudController.php`.
- - Modifier l'en tête de `Controller/Admin/DashboardController.php`.
- ````
- use Lc\SovBundle\Controller\Admin\DashboardController as LcDashboardController;
-
- class DashboardController extends LcDashboardController
- {
- // ... le code spécifique
- }
- ````
-
- - Modifier l'en tête des controllers. Exemple `Controller/Admin/PageCrudController.php`.
- ````
- use Lc\SovBundle\Controller\AbstractAdminController as AbstractCrudController;
-
- class PageCrudController extends AbstractCrudController
- {
- // ... le code spécifique
- }
- ````
- - Modifier `Entity/User.php`.
- ````
- <?php
-
- namespace App\Entity;
-
- use Doctrine\ORM\Mapping as ORM;
- use Lc\SovBundle\Model\User\UserInterface;
- use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
- use Lc\SovBundle\Model\User\User as LcUserModel;
-
- /**
- * @ORM\Entity(repositoryClass="Lc\SovBundle\Repository\User\UserRepository")
- * @UniqueEntity(fields={"email"}, message="There is already an account with this email")
- */
- class User extends LcUserModel implements UserInterface
- {
- /**
- * @ORM\Id
- * @ORM\GeneratedValue
- * @ORM\Column(type="integer")
- */
- private $id;
-
- public function getId(): ?int
- {
- return $this->id;
- }
-
- }
-
- ````
- - Modifier les entités pour que les Use pointe dans AdminBundle exemple avec `Entity/Page.php`.
- ````
- use Lc\SovBundle\Doctrine\Extension\ImageInterface;
- use Lc\SovBundle\Model\Cms\AbstractDocument;
- use Lc\SovBundle\Model\Cms\ImageTrait;
-
- /**
- * @ORM\Entity(repositoryClass=PageRepository::class)
- */
- class Page extends AbstractDocument implements ImageInterface
- {
- use ImageTrait;
-
- // ... le code spécifique
-
- }
- ````
-
- - Modifier les repository pour qu'il fonctionne avec AdminBundle exemple avec `Repository/PageRepository.php.php`.
- ````
- <?php
-
- namespace App\Repository;
-
- use App\Entity\Page;
- use Lc\SovBundle\Repository\RepositoryAbstract;
-
- /**
- * @method Page|null find($id, $lockMode = null, $lockVersion = null)
- * @method Page|null findOneBy(array $criteria, array $orderBy = null)
- * @method Page[] findAll()
- * @method Page[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
- */
- class PageRepository extends RepositoryAbstract
- {
- public function getInterfaceClass()
- {
- return Page::class;
- }
-
- // ... le code spécifique
- }
-
- ````
- - Supprimer `Repository/UserRepository.php.php`.
- Sauf si il contient des fonctions autres que `__contruct()` et `upgradePassword-()`
- Si c'est le cas le réécrire en faisant un extends de UserRepository dans AdminBundle
-
- - Faire un `composer install`
- - Tester l'application connectes toi à l'admin, édites un doc ou deux
- - Si tout est ok tu peux supprimer les dossiers :
- ````
- src/IModel/
- src/Model/
- src/Security/
- src/Command/
-
-
|