} else { // Cache data for one day by default $frontCache = new FrontendOutput(['lifetime' => $config->cache->lifetime]); return new FileCache($frontCache, ['cacheDir' => $config->cache->cacheDir, 'prefix' => $config->cache->prefix]); } }); // Setting up the view component $di->set('view', function () use($di, $eventsManager) { $config = $di->get('config'); $view = new View($config->toArray()); $view->setViewsDir($config->application->view->viewsDir); $view->disableLevel([View::LEVEL_MAIN_LAYOUT => true, View::LEVEL_LAYOUT => true]); $view->registerEngines(['.volt' => function () use($view, $config) { $volt = new Volt($view); $volt->setOptions(['compiledPath' => $config->application->view->compiledPath, 'compiledSeparator' => $config->application->view->compiledSeparator, 'compiledExtension' => $config->application->view->compiledExtension, 'compileAlways' => $config->application->debug]); $compiler = $volt->getCompiler(); $compiler->addExtension(new \Phanbook\Tools\VoltFunctions()); return $volt; }]); // Attach a listener for type 'view' $eventsManager->attach('view', function ($event, $view) { if ($event->getType() == 'notFoundView') { throw new \Exception('View not found!!! (' . $view->getActiveRenderPath() . ')'); } }); // Bind the eventsManager to the view component $view->setEventsManager($eventsManager); return $view; }); // Register the flash service with custom CSS classes $di->set('flashSession', function () {