浏览代码

Passage à symfony 6.4

feature/symfony6.1
Fabien Normand 4 个月前
父节点
当前提交
3ea03da92a
共有 8 个文件被更改,包括 13 次插入325 次删除
  1. +0
    -3
      Controller/ControllerTrait.php
  2. +1
    -2
      DependencyInjection/LcSovExtension.php
  3. +0
    -70
      Form/Common/CookieConsentTypeExtension.php
  4. +11
    -225
      README.md
  5. +0
    -7
      Resources/config/packages/ch_cookie_consent.yaml
  6. +0
    -3
      Resources/config/routes.yaml
  7. +0
    -10
      Resources/config/services.yaml
  8. +1
    -5
      Resources/views/cookie/cookie.html.twig

+ 0
- 3
Controller/ControllerTrait.php 查看文件

@@ -60,9 +60,6 @@ trait ControllerTrait
set_time_limit(0);
}

//Si vous avez une erreur avec le :array c'est qu'il faut passer à symfony 5.4.
//Suivez la procédure suivante : https://symfony.com/doc/current/setup/unstable_versions.html#upgrading-your-project-to-an-unstable-symfony-version
//En gros il faut changer tout les dépendances symfony/ qui sont en 5.3 par 5.4 dans composer.json
public static function getSubscribedServices(): array
{
return array_merge(

+ 1
- 2
DependencyInjection/LcSovExtension.php 查看文件

@@ -30,10 +30,9 @@ class LcSovExtension extends Extension implements PrependExtensionInterface
public function prepend(ContainerBuilder $container)
{
$loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config/packages'));
$loader->load('ch_cookie_consent.yaml');

/*$loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config/easy_admin'));
$loader->load('base.yaml');
$loader->load('entities/merchant.yaml');*/
}
}
}

+ 0
- 70
Form/Common/CookieConsentTypeExtension.php 查看文件

@@ -1,70 +0,0 @@
<?php

namespace Lc\SovBundle\Form\Common;

use ConnectHolland\CookieConsentBundle\Cookie\CookieChecker;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
use ConnectHolland\CookieConsentBundle\Form\CookieConsentType as BaseCookieConsentType;

class CookieConsentTypeExtension extends AbstractTypeExtension
{
/**
* @var CookieChecker
*/
protected $cookieChecker;

/**
* @var array
*/
protected $cookieCategories;

/**
* @var bool
*/
protected $cookieConsentSimplified;

public function __construct(
CookieChecker $cookieChecker,
array $cookieCategories = [],
bool $cookieConsentSimplified = null
) {
$this->cookieChecker = $cookieChecker;
$this->cookieCategories = $cookieCategories;
$this->cookieConsentSimplified = $cookieConsentSimplified;
}

public function buildForm(FormBuilderInterface $builder, array $options)
{
foreach ($this->cookieCategories as $category) {
$builder->remove($category);

$data = 'true';
if ($this->cookieChecker->isCookieConsentSavedByUser() && !$this->cookieChecker->isCategoryAllowedByUser(
$category
)) {
$data = 'false';
}

$builder->add(
$category,
ChoiceType::class,
[
'expanded' => true,
'multiple' => false,
'data' => $data,
'choices' => [
['ch_cookie_consent.yes' => 'true'],
['ch_cookie_consent.no' => 'false'],
],
]
);
}
}

public static function getExtendedTypes(): iterable
{
return [BaseCookieConsentType::class];
}
}

+ 11
- 225
README.md 查看文件

@@ -1,241 +1,27 @@
# Laclic SovBundle

Administration basé sur EasyAdmin 3. Développé par <a href="https://www.laclic.fr">la Clic!</a>
Administration basé sur EasyAdmin 4. Développé par <a href="https://www.laclic.fr">la Clic!</a>

Require :
- Symfony > 5.3
- EasyAdmin > 5.3
- FOS/Ckeditor-bundle: "^2.2",
- php >= 8.1
- Symfony >= 6.4
- EasyAdmin > =4.4
- FOS/Ckeditor-bundle: >= 2.5,

## 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
Si tu démarres un nouveau projet il te suffit de cloner le projet : https://forge.laclic.fr/Laclic/SovSkeleton

- À 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 .
- À la racine de ton projet créer un dossier Lc/SovBundle/
- Dans le dossier Lc/SovBundle :
```

- 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
#...
git clone https://forge.laclic.fr/Laclic/SovBundle/ .
```
- Lancer un `yarn install`
- 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'
```

`php bin/console assets:install public`
- 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/

+ 0
- 7
Resources/config/packages/ch_cookie_consent.yaml 查看文件

@@ -1,7 +0,0 @@
ch_cookie_consent:
theme: 'light' # light, dark
categories: # Below are the default supported categories
- 'piwik'
use_logger: true # Logs user actions to database
position: 'bottom' # top, bottom
simplified: false # When set to true the user can only deny or accept all cookies at once

+ 0
- 3
Resources/config/routes.yaml 查看文件

@@ -9,6 +9,3 @@ artgris_bundle_file_manager:
lc_sov_bundle:
resource: "@LcSovBundle/Controller"
type: annotation

ch_cookie_consent:
resource: "@CHCookieConsentBundle/Resources/config/routing.yaml"

+ 0
- 10
Resources/config/services.yaml 查看文件

@@ -48,13 +48,3 @@ services:
Lc\SovBundle\EventListener\ExceptionListener:
tags:
- { name: kernel.event_listener, event: kernel.exception }

#Form par défaut du cookie consent
app.form.extension.type.cookie_consent:
class: Lc\SovBundle\Form\Common\CookieConsentTypeExtension
tags:
- { name: form.type_extension, extended_type: ConnectHolland\CookieConsentBundle\Form\CookieConsentType }
arguments:
- '@ConnectHolland\CookieConsentBundle\Cookie\CookieChecker'
- '%ch_cookie_consent.categories%'
- '%ch_cookie_consent.simplified%'

+ 1
- 5
Resources/views/cookie/cookie.html.twig 查看文件

@@ -1,8 +1,5 @@
{% if chcookieconsent_isCookieConsentSavedByUser() == false %}
{{ render_esi(path('ch_cookie_consent.show')) }}
{% endif %}

{% if chcookieconsent_isCategoryAllowedByUser('piwik') == true %}

<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
@@ -20,4 +17,3 @@
})();
</script>
<!-- End Matomo Code -->
{% endif %}

正在加载...
取消
保存