CRUDlexSymfony4Bundle
This bundle provides the integration of CRUDlex in a Symfony 4 project., (*1)
Installation
Applications that use Symfony Flex
Open a command console, enter your project directory and execute:, (*2)
$ composer require philiplb/crudlexsymfony4bundle
Applications that don't use Symfony Flex
Step 1: Download the Bundle
Open a command console, enter your project directory and execute the
following command to download the latest stable version of this bundle:, (*3)
$ composer require philiplb/crudlexsymfony4bundle
This command requires you to have Composer installed globally, as explained
in the installation chapter
of the Composer documentation., (*4)
Be aware that unfortunately one depedency requires the composer.json to accept unstable releases:, (*5)
"minimum-stability": "dev",
"prefer-stable": true,
Step 2: Enable the Bundle
Add the bundle to your config/bundles.php
:, (*6)
<?php
// config/bundles.php
return [
// ...
philiplb\CRUDlexSymfony4Bundle\CRUDlexSymfony4Bundle::class => ['all' => true],
//...
];
Or, depending on your setup, enable the bundle by adding it to the list of registered bundles
in the app/AppKernel.php
file of your project:, (*7)
<?php
// app/AppKernel.php
// ...
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
// ...
new philiplb\CRUDlexSymfony4Bundle\CRUDlexSymfony4Bundle(),
);
// ...
}
// ...
}
Step 3: Add the Routes
CRUDlex brings some routes so they must be added to your config/routes.yaml
. This makes them available under /crud:, (*8)
crudlex:
resource: '@CRUDlexSymfony4Bundle/Resources/config/routes.yaml'
prefix: /crud
CRUDlexSymfony4Bundle is basically a chunk of services. Some configuration like the location of the crud.yml happens
here. You can override each service in order to fit your requirements with the config/services.yaml
. Here is the
complete configuration to pick from:, (*9)
services:
crudlex.dataFactoryInterface:
public: true
class: "CRUDlex\\MySQLDataFactory"
arguments:
- "@doctrine.dbal.default_connection"
crudlex.entityDefinitionFactoryInterface:
public: true
class: "CRUDlex\\EntityDefinitionFactory"
crudlex.fileSystemAdapter:
public: true
class: "League\\Flysystem\\Adapter\\Local"
arguments:
- "%kernel.project_dir%/var"
crudlex.fileSystem:
public: true
class: "League\\Flysystem\\Filesystem"
arguments:
- "@crudlex.fileSystemAdapter"
crudlex.entityDefinitionValidatorInterface:
public: true
class: "CRUDlex\\EntityDefinitionValidator"
crudlex.service:
public: true
class: "CRUDlex\\Service"
arguments:
- "%kernel.project_dir%/config/crud.yml"
- "%kernel.cache_dir%"
- "@Symfony\\Component\\Routing\\Generator\\UrlGeneratorInterface"
- "@translator"
- "@crudlex.dataFactoryInterface"
- "@crudlex.entityDefinitionFactoryInterface"
- "@crudlex.fileSystem"
- "@crudlex.entityDefinitionValidatorInterface"
CRUDlex\Controller:
public: true
class: "CRUDlex\\Controller"
arguments:
- "@crudlex.service"
- "@crudlex.fileSystem"
- "@twig"
- "@session"
- "@translator"
kernel.listener.crudlex:
class: philiplb\CRUDlexSymfony4Bundle\EventListener\RequestListener
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
arguments:
- "@crudlex.service"
- "@session"
- "@translator"
crudlex.twigExtensions:
class: "philiplb\\CRUDlexSymfony4Bundle\\Twig\\CRUDlexExtension"
tags: ["twig.extension"]
arguments:
- "@request_stack"
- "@session"