【问题标题】:SlimPHP - strange error with extending twig (function)SlimPHP - 扩展树枝(函数)的奇怪错误
【发布时间】:2017-07-09 09:58:27
【问题描述】:

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

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

致命错误:无法在第 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);

容器中的视图声明:

$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;
};

【问题讨论】:

    标签: php twig slim


    【解决方案1】:

    您需要使用扩展自Twig_FunctionTwig_SimpleFunction,因为您无法实例化抽象类。

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

    【讨论】:

    • 嗯嗯当然 - 你是 100% 正确的。我不知道为什么我没有看到这个:/
    • 好吧,当您查找文档时,文档在示例中使用了 Twig_Function。所以我很高兴这个问题的存在。
    • 是的,我不明白为什么文档让你使用抽象类。感觉很糟糕。这也是我在这里的原因。
    猜你喜欢
    • 2017-03-31
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 2016-02-20
    • 1970-01-01
    相关资源
    最近更新 更多