Не загружается файловая система в Twig

72
24 марта 2022, 15:20

Да автозагрузчик установлен.

вот код атолоадера:

`require_once 'vendor/autoloader.php';
Twig_Autoloader::register();
spl_autoload_register("gbStandardAutoload");

  function gbStandardAutoload($className)
  {
    $dirs = [
      'composer',
      'controller',
      'model',
      'app/core'
    ];
    $found = false;
    foreach ($dirs as $dir) {
      $fileName = __DIR__ . '/'. $dir . '/' . $className . '.class.php';
      if (is_file($fileName)) {
        require_once($fileName);
        $found = true;
      }
    }
    //$obj = new A;
    if (!$found) {
      throw new Exception('Unable to load ' . $className);
    }
    return true;
}`

структура папок:

в корне: app/core
         cofiguration (где лежит config.defaul.php)
         templates
         файл autoload.php

$config['path_templates'] = $config['path_root'] . '/../templates'; $config['path_root' = это переменная __DIR__

Вот часть кода из класса App который находится в app/core:

`if (isset($_GET['page'])) {
           $controllerName = ucfirst($_GET['page']) . 'Controller'; //IndexController
           $methodName = isset($_GET['action']) ? $_GET['action'] : 'index';
           $controller = new $controllerName(); //new
           $data = [
             'content_data' => $controller->$methodName($_GET['id']),
             'title' => $controller->title,
           ];
           if (!isset($_GET['a'])) {
             $view = $controller->view . '/' . $methodName . '.html.twig'; //index/index.html
             $temp = Config::get('path_templates');
             echo ($temp);
             $loader = new \Twig\Loader\FilesystemLoader(Config::get('path_templates'));
             $twig = new \Twig\Environment($loader);
             try {
               $template = $twig->load($view);
             } catch (LoaderError $e) {
               echo ($e->getMessage());
             } catch (RuntimeError $e) {
               ($e->getMessage());
             } catch (SyntaxError $e) {
               ($e->getMessage());
             }
             echo $template->render($data);
           } else {
             echo json_encode($data);`

вот путь который выводится

E:\OSPanel\domains\duellist.dev\configuration/../templates

вот ошибка

ArrayUnable to load Twig\Loader\FilesystemLoader

что за Array понять не могу может к этой ошибке относится, может и нет, хотя везде поотключал вывод на экран

Answer 1

Ошибка была в неправильном подключении автозагрузчика, я в стартовом файле прописал require_once 'vendor/autoload.php'; и прописал spl_autoload_register("gbStandardAutoload"); соответственно саму функцию gbStandardAutoload также перенёс в стартовый файл, и удалил свой автолодер классов.

Answer 2

Класс \Twig\Loader\FilesystemLoader должен подключать автозагрузчик вендора ( https://github.com/twigphp/Twig/blob/3.x/src/Loader/FilesystemLoader.php ), а подключает атозагрузчик ядра. Twig установлен? В структуре папок нету инфы не о папке vendor, не о папке vendor/twig. Выполните composer update на всякий случай.

READ ALSO
Проблема с подключением библиотеки brain.js

Проблема с подключением библиотеки brain.js

Написал нейросеть на JavaScript (должна определять рисунки), однако возникла проблема при подключении самой библиотеки brainjs

159
Регулярное выражение JS не работает

Регулярное выражение JS не работает

Всем ку! Помогите плез разобратьсяПочему при следующем коде я получаю вывод 'ttps', а не 'facebook'? Почему не работает \?

107
Получить geoJSON полигоны напрямую онлайн

Получить geoJSON полигоны напрямую онлайн

Я использую карты leaflet, и мне нужно выделить определенные регионыЯ делаю выделение с помощью полигонов geoJSON

68