Timber::render 似乎无法在 kinsta 上正常工作

Timber::render does not appear to work correctly on kinsta

我正在迁移 wordpress 主题并对其进行故障排除。我有一个 gutenberg 块和一个警报模块设置为使用允许使用 twig 模板引擎的 Timber composer 包。

我在 class

中配置了它

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 包,测试 class 之外的代码直接进入 functions.php 文件,并验证代码可以到达并将文件内容输出为字符串。我检查了错误日志文件,但找不到解决方案或错误原因。

主机配置: Kinsta缓存:禁用 启用 Wordpress 调试 运行 在 PHP 7.4 使用 MySQL

我将其添加到我的 functions.php 文件中


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

所以 functions.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:locations 方法允许您设置自定义位置来存储模板: https://timber.github.io/docs/guides/template-locations/

不确定为什么这在其他系统上有效,但在 Kinsta 上无效。但是,通过显式设置视图,这似乎是一种很好的做法。