<?php namespace App\Controllers; use App\Flight\FlightAbstract; use Exception; /** * abstract controller to handle views and response from directus * * * @author Björn Hase, Tentakelfabrik * @license http://opensource.org/licenses/MIT The MIT License * @link https://gitea.tentakelfabrik.de/Tentakelfabrik/super-gear-directus * */ abstract class DirectusControllerAbstract extends FlightAbstract { /** default template for view */ protected $defaultView = NULL; /** * if item not found * * @param string $page * @return boolean */ protected function notFound($item) { return (!$item || ($item && isset($item['error']) && $item['error']['code'] === 203)); } /** * * @param string $view * @return boolean */ protected function viewExists($view) { $result = false; if (file_exists($this->app->get('flight.views.path').'/'.$view.'.blade.php')) { $result = true; } return $result; } /** * * @param [type] $page [description] * @param array $data [description] * @return [type] [description] */ protected function render($page, $data = []) { $view = $this->defaultView; // if view isset in page and file exists if (isset($page['data']['view'])) { if ($this->viewExists($page['data']['view'])) { $view = $page['data']['view']; } else { throw new Exception('View '.$page['data']['view'].' not exists'); } } else if (!$this->viewExists($view)) { throw new Exception('View '.$view.' not exists'); } $this->app->render($view, array_merge([ 'page' => $page, 'flight' => $this->app ], $data )); } }