Utilizando el valor récord como parámetro de la función de la ramita

votos
0

Estoy trabajando en la escritura de una extensión del perno para analizar un archivo XML y devolver el árbol de objetos deserialised para el XML. El análisis y la deserialising está funcionando a las mil maravillas, pero no puedo obtener el nombre de archivo del registro de la página de trabajo como parámetro para la función de la ramita.

código de extensión (simplificado) es:

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

El contenttype(extendido el homepage) adición es:

competitionxml:
    type: file
    upload: competitions
    group: content

Carga del archivo tampoco es un problema, pero el siguiente código de la plantilla de la ramita da un error:

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

Usando dumpveo que xmlfiletiene el valor correcto. Pero me sale el siguiente error:

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

Entonces, ¿cómo puedo usar el nombre del fichero adjunto como parámetro para la función de la ramita?

Publicado el 20/10/2018 a las 12:58
fuente por usuario
En otros idiomas...                            

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