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