Timber :: render не работает правильно на kinsta - PullRequest
0 голосов
/ 22 апреля 2020

Я мигрирую и устраняю неполадки в теме WordPress. У меня есть блок Гутенберга и модуль оповещения, настроенный для использования пакета Timber composer, который позволяет использовать шаблонизатор веток.

Я настроил его в классе

ProcessorTable. php

<?php
namespace CRG\Blocks;

class ProcessorTable
{
    public function __construct()
    {
        $this->createProcessorTable();
    }

    public function createProcessorTable()
    {
        if (function_exists('acf_register_block')) {
          // register a custom vue gravity forms block
                acf_register_block(array(
                    'name'            => 'processor-table-block',
                    'title'           => __('Processor Table Block'),
                    'description'     => __('A Block for displaying a contracted database processors table'),
                    'category'        => 'crg-custom-blocks',
                    'icon'            => 'welcome-write-blog',
                    'render_callback' => array($this, 'render_processor_table'),
                    'keywords'        => array( 'table' ),
          ));
        }
      }
    public function render_processor_table($block, $content = '', $is_preview = false)
    {
        $context = \Timber\Timber::context();
        // Store block values.
        $context['block'] = $block
        // Store field values.
        $context['fields'] = get_fields();
        // Store $is_preview value.
        $context['is_preview'] = $is_preview;
        $twigPath = TEMPLATEPATH . "/src/views/blocks/block-processor-table.html.twig";
        \Timber\Timber::render($twigPath, $context, 600);

    }
}

AlertNotification. php

<?php

namespace CRG\Controllers\SiteWide;

class AlertNotification {

    public function AlertModal(){
        $context = \Timber\Timber::context();
        $context['alert_header_text'] = get_field('alert_header_text', 'options');
        $context['alert_text'] = get_field('alert_text', 'options');
        $context['alert_icon'] = get_field('alert_icon', 'options');
        $context['alert_color'] = get_field('alert_color', 'options');
        $context['alert_toggle'] = get_field('alert_toggle', 'options');




        \Timber\Timber::render( TEMPLATEPATH . "/src/views/sitewide/alert-modal.html.twig", $context );
    }
}

этот код работал на сервере cpanel и на nexcess управлял хостингом WordPress, но когда я перенес его на kinsta, код прекратил рендеринг. Похоже, что Timber :: context () работает, и метод может найти файлы html .twig, но он не может отобразить шаблон ветки и не выдает ошибок

Я пытался устранить эту проблему проверяя версии пакета composer, переустанавливая пакет timber composer, проверяя код вне класса непосредственно в файле functions. php и проверяя, что код может достичь и вывести содержимое файла в виде строки. Я проверил файлы журнала ошибок и не смог найти решение или причину ошибки.

Конфигурация хостинга: Кэширование Kinsta: отключено Отладка Wordpress включена Запуск на PHP 7.4 Использование MySQL

1 Ответ

0 голосов
/ 24 апреля 2020

Я добавил это к своим функциям. php файл


\Timber\Timber::$locations = TEMPLATEPATH . "/src/views";

, чтобы все в функциях. php файл для работы с деревом выглядел бы так:


require_once(__DIR__ . '/vendor/autoload.php');
$timber = new Timber\Timber();
\Timber\Timber::$locations = TEMPLATEPATH . "/src/views";

затем в моем файле ProcessorTable. php я могу назвать путь к файлу Twig следующим образом:

$twigPath = "/blocks/block-processor-table.html.twig";

return \Timber\Timber::render( $twigPath, $context);

Я думаю о том, что пошло не так, что пакет древесины просматривал неправильный каталог при рендеринге, основываясь на неверном информация о местоположении. Метод Timber: местоположения позволяет настроить пользовательское местоположение для хранения шаблонов: https://timber.github.io/docs/guides/template-locations/

Не уверен, почему это сработало бы в других системах, но не в Kinsta. Тем не менее, похоже, что это хорошая практика в будущем, явно устанавливая представления.

...