TWIG и вывод ошибок

Тема в разделе "Общие вопросы", создана пользователем Chukcha, 10 окт 2017.

  1. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    Если ограничится циклами и выводом
    Но кое-что, я, например, выносил в шаблон а теперь проблема.. приходиться извращаться.

    Кроме того, с отладкой плохо
    Так я мог использовать необъявленный индекс в массиве и у меня была ошибка, а сейчас ее нет
     
  2. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    881
    Симпатии:
    243
    Её съедает компилятор twig?
     
  3. Ravilr

    Ravilr Специалист

    Сообщения:
    4.225
    Симпатии:
    1.452
    В описание все написано, читайте внимательно. Это залог того, чтобы потом небыло "ой...а я не знал что так..ой версия, ой регистрация.. ой ой.."
     
  4. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    да, условно
    вот пример, пусть неудачные, но весьма наглядный
    Код:
    echo (isset($context["column_left"]) ? $context["column_left"] : null);
     
  5. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    881
    Симпатии:
    243
    Код:
    {{ context.column_left is not empty ? context.column_left : null }}
     
  6. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    Не, не
    Я вам показал скомпилированый кусок

    А в шаблоне
    {{ column_left }}
    И если вдруг, я не объявил $data['column_left'] в контроллере, то я никогда не узнаю есть он или нет
     
  7. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    881
    Симпатии:
    243
    Понял! Типа если нет такого, то вернёт нул. То есть {{ data }} выполнится в любом случае!
     
  8. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    да

    Может есть что-то в твиге в виде дебага, но мне это пока не надо.. я не шаблонПесеЦ
     
  9. Ravilr

    Ravilr Специалист

    Сообщения:
    4.225
    Симпатии:
    1.452
    Конечно есть. Лучше чтобы это при разработке по умолчанию было включено или вообще не выключалось.
    Уж лучше ошибка.. чем пустота.
    в \system\library\template\Twig\Environment.php
    у 'strict_variables' => false, ставим в true
     
  10. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    Ну.. а давайте в движок твига не лазить

    system\library\template\twig.php
    после
    Код:
            if ($cache) {
                $config['cache'] = DIR_CACHE;
            }
    Добавить

    Код:
     $config['strict_variables'] = true;
    Это позволит управлять из админки (если сделать интерфейс)
     
  11. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    хе.. включил на свою голову :(

    При первой ошибке сразу же..
    И даже не пустило дальше,
    блин.. ну напиши что плохо, но зачем так strict'но


    Зачем дальше? Мне нужно сообщение, что с ним дальше делать, я придумаю
    Но так резко..

    вот смотрите
    Создаю массив

    $data['names'] = array();

    Далее создаю второй массив
    $data['names2'] = array();

    Заполняю их в одном цикле
    т.е. индексы у них одинаковые

    В шаблоне
    {% for key,nm2 in names2 %}
    {{ names.key }}

    Бабах!!!
    Нет значений. Или что-то подобное (уже не помню)
    Я, конечно, не спец во твиге. Но на мой взгляд так происходит доступ к элементу массива
    Если nm2 - массив, то
    {{ nm2.href }}
    в крайнем случае в ph стиле
    {{ nm2['href'] }}
    и по идее
    {{ names.key }} должно!!!

    я не понимаю
    Подключаю отладчик
    {{ dump(names) }}
    Все есть

    Наконец начинаю читать документацию twig array

    И тут явно ничего нет

    Но, мы не привыкли отступать

    {{ names[key] }}
    Вот так все доступно..

    Т.е. режим нужен только на момент отладки, не переносите его на готовый релиз
    Вы не можете дать гарантию, что в какой-то момент не попадете на ошибку.
     
    DanMir и Ален нравится это.
  12. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    641
    Это точно. Раньше все грузилось и ошибки выдавало, а теперь Бабахх
     
  13. FromSochiWithLove

    FromSochiWithLove Новичок

    Сообщения:
    7
    Симпатии:
    0
    Подскажите, пожалуйста!
    Мне надо распечатать массив. {{ dump(categories) }}, чтоб посмотреть, что там. Программа ругается, что не знает такую ф-цию dump.
    Я изменила twig.php-конфигурацию /system/library/template/twig.php).

    'debug' => true, $this->twig->addExtension(new \Twig_Extension_Debug());

    public function render($template, $cache = false) {
    // specify where to look for templates
    $loader = new \Twig_Loader_Filesystem(DIR_TEMPLATE);
    // initialize Twig environment
    $config = array('autoescape' => false, 'debug' => true);
    if ($cache) {
    $config['cache'] = DIR_CACHE;
    }
    $this->twig = new \Twig_Environment($loader, $config);
    $this->twig->addExtension(new \Twig_Extension_Debug());

    try {
    // load template
    $template = $this->twig->loadTemplate($template . '.twig');[/font][/color]
    [font=SFMono-Regular, Consolas,] return $template->render($this->data);
    } catch (Exception $e) {
    trigger_error('Error: Could not load template ' . $template . '!');
    exit();
    }
    }

    Кеш обновляла.
    Но не получается распечатывать, опять не знает ф-цию dump
     
  14. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    Я этот extensiion подкючал, в твиговском
    Environment.php
    $this->addExtension(new Twig_Extension_Debug($options['debug']));
     
    DanMir нравится это.
  15. FromSochiWithLove

    FromSochiWithLove Новичок

    Сообщения:
    7
    Симпатии:
    0
    Спасибо, получилось!