src/Kernel.php line 28

Open in your IDE?
  1. <?php
  2. namespace App;
  3. use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
  4. use Symfony\Component\Config\Loader\LoaderInterface;
  5. use Symfony\Component\Config\Resource\FileResource;
  6. use Symfony\Component\DependencyInjection\ContainerBuilder;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpKernel\HttpKernelInterface;
  9. use Symfony\Component\HttpKernel\Kernel as BaseKernel;
  10. use Symfony\Component\Routing\RouteCollectionBuilder;
  11. class Kernel extends BaseKernel
  12. {
  13.     use MicroKernelTrait;
  14.     const CONFIG_EXTS '.{php,xml,yaml,yml}';
  15.     // Those prefixes are used to determine EasyAdmin configuration and cache folder to use.
  16.     public const BACKENDS_PREFIXES = ['system''admin''manager''agent''customer'];
  17.     protected static $backendContext;
  18.     /**
  19.      * @override
  20.      */
  21.     public function handle(Request $request$type HttpKernelInterface::MASTER_REQUEST$catch true) {
  22.         if($type == HttpKernelInterface::MASTER_REQUEST && static::$backendContext == null) {
  23.             $request_uri explode('/'$request->server->get('REQUEST_URI'));
  24.             $uri_context $request_uri[1];
  25.             if(in_array($uri_contextself::BACKENDS_PREFIXES)) {
  26.                 static::$backendContext $uri_context;
  27.             }
  28.         }
  29.         return parent::handle($request$type$catch);
  30.     }
  31.     public function getCacheDir()
  32.     {
  33.         // Cache folders exemples : '/var/cache/dev/system' or '/var/cache/prod/agent' or, by default '/var/cache/dev/front'
  34.         return $this->getProjectDir().'/var/cache/' $this->environment . (static::$backendContext != null '/' . static::$backendContext '/front');
  35.     }
  36.     public function getLogDir()
  37.     {
  38.         return $this->getProjectDir().'/var/log';
  39.     }
  40.     public function registerBundles()
  41.     {
  42.         $contents = require $this->getProjectDir().'/config/bundles.php';
  43.         foreach ($contents as $class => $envs) {
  44.             if (isset($envs['all']) || isset($envs[$this->environment])) {
  45.                 yield new $class();
  46.             }
  47.         }
  48.     }
  49.     protected function configureContainer(ContainerBuilder $containerLoaderInterface $loader)
  50.     {
  51.         $container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php'));
  52.         // Feel free to remove the "container.autowiring.strict_mode" parameter
  53.         // if you are using symfony/dependency-injection 4.0+ as it's the default behavior
  54.         $container->setParameter('container.autowiring.strict_mode'true);
  55.         $container->setParameter('container.dumper.inline_class_loader'true);
  56.         $confDir $this->getProjectDir().'/config';
  57.         $loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS'glob');
  58.         $loader->load($confDir.'/{packages}/'.$this->environment.'/**/*'.self::CONFIG_EXTS'glob');
  59.         $loader->load($confDir.'/{services}'.self::CONFIG_EXTS'glob');
  60.         $loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS'glob');
  61.         // EasyAdmin dynamic configuration file
  62.         if(static::$backendContext != null) {
  63.             $loader->load($confDir '/backends/' . static::$backendContext '.yaml');
  64.         }
  65.     }
  66.     protected function configureRoutes(RouteCollectionBuilder $routes)
  67.     {
  68.         $confDir $this->getProjectDir().'/config';
  69.         $routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS'/''glob');
  70.         $routes->import($confDir.'/{routes}/'.$this->environment.'/**/*'.self::CONFIG_EXTS'/''glob');
  71.         $routes->import($confDir.'/{routes}'.self::CONFIG_EXTS'/''glob');
  72.         // Easy admin dynamic route prefixing
  73.         if(static::$backendContext != null) {
  74.             $routes->import('App\Controller\Backend\Ea' ucfirst(static::$backendContext) . 'Controller', static::$backendContext'annotation');
  75.         }
  76.     }
  77. }