gpt4 book ai didi

php - SlimPHP - 扩展 Twig (函数)的奇怪错误

转载 作者:可可西里 更新时间:2023-11-01 00:04:50 25 4
gpt4 key购买 nike

我在 PHP Slim(最新版本)中有一些简单的应用程序,它是一个简单的网站,可以从数据库获取数据并将其显示在 twig 模板上。没有什么花哨。只要我不尝试向 twig 添加自定义功能,一切都会完美无缺。

当我向 twig 添加自定义函数时,在某些服务器上(在本地主机 laragoon 上工作正常,在具有相同 php 版本的生产服务器上我没有得到这个错误:

fatal error :无法在...第 4 行的 twig.php 中实例化抽象类 Twig_Function

下面是我的 twig.php - 错误连接到 new Twig_Function ,但老实说我在这里看不到任何抽象类......,在本地主机 Laragon 上它工作正常,生产

有人知道如何解决这个问题吗?

<?php

$twig=$container->get('view')->getEnvironment();
$function = new Twig_Function('fotki', function ($id) use ($container) {
$files=array();
$dir=opendir($container->get('settings')['fotki_path'].(int)$id);
while($file=readdir($dir)){
if((strlen($file)>3)&&(substr($file,-3)=='jpg')){
array_push($files,(int)$id.'/'.$file);
//
}
}
closedir($dir);
return $files;


});
$twig->addFunction($function);

$function = new Twig_Function('fotkalink', function ($path) use ($container) {
$tab=explode('/',$path);
return 'mediaimage/'.$tab[0].'-'.$tab[1];
});
$twig->addFunction($function);

容器中的 View 声明:

$container['view'] = function ($c)  {
$a=[];
if($c['settings']['env']=='prod')
$a=[ 'cache' => __DIR__.'/../cache'];
$view = new \Slim\Views\Twig( __DIR__.'/../templates', $a);
$basePath = rtrim(str_ireplace('index.php', '', $c['request']->getUri()->getBasePath()), '/');
$view->addExtension(new Slim\Views\TwigExtension($c['router'], $basePath));

return $view;
};

最佳答案

您需要使用 Twig_SimpleFunction它扩展了 Twig_Function,因为您无法实例化抽象类。

$function = new Twig_SimpleFunction('fotkalink', function ($path) use ($container) {
$tab=explode('/',$path);
return 'mediaimage/'.$tab[0].'-'.$tab[1];
});
$twig->addFunction($function);

关于php - SlimPHP - 扩展 Twig (函数)的奇怪错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42339196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com