2017-01-11 13 views

Odpowiedz

14

W Gałązka 2,0 {{ import }} „ed makra nie są dziedziczone do szablonów już dzieckiem, zobacz https://github.com/twigphp/Twig/issues/2336

Rozwiązanie: trzeba importować wymaganego makro (y) w każdym pojedynczym pliku .twig.

Jeśli błąd pojawia się w wierszu zawierającym {{ include }} lub {{ extends }}, należy zajrzeć do szablonu, który jest uwzględniany/rozszerzany, i zaimportować makro tam.

0

Jeśli masz dużo plików Twig przy użyciu swoich makr, może być łatwiejsze i mniej podatne na błędy zdefiniować globalne funkcje Twig do a Twig Extension. W ten sposób nie musisz importować makr do każdego pliku (który prawdopodobnie zostanie naprawiony w przyszłej wersji Twig).

Na przykład, gdy miałem

{% macro error(message, dismissible=true) %} 
    {# Error display code #} 
{% endmacro %} 

I teraz zostały zdefiniowane w gałązkę Extension nazywa UtilitiesExtension następującą funkcją:

public function getFunctions() 
    { 
     return array(
      // ... 
      new \Twig_SimpleFunction('error', array($this, 'error')), 
     ); 
    } 

    public function error($message, $dismissible = true) { 
     return $this->twig->render('patterns/utils/error.html.twig', [ 
      'text' => $message, 
      'limit' => $dismissible, 
     ]); 
    } 

Następnie należy zastąpić makro połączeń z nazwami funkcji ; pamiętaj, że nie możesz używać kropek w nazwach funkcji.

To rozwiązanie jest czyste, ponieważ Twig Macros mają być odpowiednikami funkcji PHP. Oczywiście powinno to być dostosowane do twoich potrzeb.

Powiązane problemy