Использование значения записи в качестве параметра функции Twig - PullRequest
0 голосов
/ 20 октября 2018

Я работаю над написанием расширения 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?

...