Я работаю над написанием расширения Bolt для анализа XML-файла и возврата десериализованного дерева объектов для XML.Синтаксический анализ и десериализация работает как чудо, но я не могу получить имя файла из записи страницы, работающей в качестве параметра для функции Twig.
Код расширения (упрощенный):
class CompetitionExtension extends SimpleExtension
{
protected function registerTwigFunctions()
{
return [
'competition' => 'competitionFunction',
];
}
/**
* Load and parse the competition XML.
*
* @param string $filename
* @return Competition
*/
public function competitionFunction(string $filename) : Competition
{
$competition = null;
$loader = new FileLoader($filename);
if ($loader->openFile()) {
$competition = $loader->parse();
}
return $competition;
}
}
contenttype
(расширен homepage
):
competitionxml:
type: file
upload: competitions
group: content
Загрузка файла также не проблема, но следующий код шаблона Twig выдает ошибку:
{% set xmlfile = homepage.competitionxml %}
{% set comp = competition(xmlfile) %}
Используя dump
, я вижу, что xmlfile
имеет правильное значение.Но я получаю следующую ошибку:
An exception has been thrown during the rendering of a template ("Notice: Undefined variable: filename") in "index.twig" at line 27.
Итак, как я могу использовать имя файла вложения в качестве параметра для функции Twig?