Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Twig PHP将现有数组传递给Twig筛选器_Php_Twig - Fatal编程技术网

Twig PHP将现有数组传递给Twig筛选器

Twig PHP将现有数组传递给Twig筛选器,php,twig,Php,Twig,我正在尝试在twig中实现我的自定义翻译过滤器。所有翻译都存储在csv中。根据模板,我们有一个包含数据的csv 现在,由于某些原因,筛选器中的函数无法访问$TranslationText数组 我应该更改什么以使过滤器正常工作 注意:未定义变量:第103行/public_html/public/index.php中的TranslationText {{'Whatever'|t}要求翻译 if (file_exists("../application/languages/nl/".$RenderTe

我正在尝试在twig中实现我的自定义翻译过滤器。所有翻译都存储在csv中。根据模板,我们有一个包含数据的csv

现在,由于某些原因,筛选器中的函数无法访问$TranslationText数组

我应该更改什么以使过滤器正常工作

注意:未定义变量:第103行/public_html/public/index.php中的TranslationText

{{'Whatever'|t}要求翻译

if (file_exists("../application/languages/nl/".$RenderTemplate.".csv") != FALSE) {
    $handle  = file_get_contents("../application/languages/nl/".$RenderTemplate.".csv");
    $handle_row = explode("\n", $handle);
    foreach ($handle_row as $key => $val) {
        $row_array = explode('|', $val);
        foreach ($row_array as $key => $val) {
            $row_array[$key] = trim(str_replace('"', '', $val));
        }
        $TranslationText[] = $row_array;
    }
}


require_once '../library/Twig/Autoloader.php';
Twig_Autoloader::register();
$loader = new Twig_Loader_Filesystem('../application/views/');
//Add Translation Filter
$filter = new Twig_SimpleFilter('t', function ($string) {

    foreach($TranslationText AS $key => $value)//line 103
    {
        if($TranslationText[$key][0] == $string)
        {
            $Found = TRUE;
            $TranslatedText = $TranslationText[$key][1];
        }
    }

    if($Found == TRUE)
    {
        return $TranslatedText;
    }
    else
    {
        return $string;
    }

});


$twig = new Twig_Environment($loader, array(
    'cache' => '../tmp/cache/', 'auto_reload' => TRUE, 'debug' => TRUE
));
//REMOVE auto_reload and DEBUG if live!
$twig->addFilter($filter);
echo $twig->render($RenderTemplate.".html", $TotalArray);

我所能说的是,由于以下原因,您得到了错误:

$filter = new Twig_SimpleFilter('t', function ($string) {
    foreach($TranslationText AS $key => $value)//line 103
    //... other code lines follow
});
您没有
使用
$translationText
。考虑这个代码:

$filter = new Twig_SimpleFilter('t', function ($string) use ($TranslationText) {
    foreach($TranslationText AS $key => $value)//line 103
    //... other code lines follow
});
请注意,如果您的csv文件不存在或无法读取,您仍然会收到相同的错误,因为您没有在
文件\u exists
条件之外声明此变量

注意:我不能保证这是你代码中唯一的问题。这只是针对你的特殊问题的解决方案

另外,一般来说,你的代码看起来很混乱。考虑使用面向对象编程来解决这些问题。另外,请注意您使用的标准:一些变量使用下划线命名,其他变量使用CamelCase命名