Usando valor recorde como parâmetro de função Twig

votos
0

Eu estou trabalhando em escrever uma extensão de Bolt para analisar um arquivo XML e retornar a árvore de objetos deserialised para o XML. A análise e deserialising está trabalhando como um encanto, mas não posso obter o nome do arquivo a partir do registro página trabalhando como um parâmetro para a função de Twig.

código de extensão (simplificado) é:

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

O contenttype(estendido a homepage) adição é:

competitionxml:
    type: file
    upload: competitions
    group: content

Carregar do arquivo também é nenhum problema, mas o seguinte código template Twig dá um erro:

{% set xmlfile = homepage.competitionxml %}
{% set comp = competition(xmlfile) %}

Usando dumpvejo que xmlfiletem o valor correto. Mas eu recebo o seguinte erro:

An exception has been thrown during the rendering of a template (Notice: Undefined variable: filename) in index.twig at line 27.

Então, como eu posso usar o nome do arquivo do anexo como parâmetro para a função Twig?

Publicado 20/10/2018 em 13:58
fonte usuário
Em outras línguas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more