2016-08-18 2 views
2

Ich benutze Slim Framework zum ersten Mal und auch mit Zweig für Templatizer. Ich habe eine land.twig Datei der Inhalt dieser Datei sindVerwenden von PHP-Code in .twig-Datei schlanke Rahmen

<form action="index.html" method="get"> 
      <div class="form-group"> 
      <input type="text" class="form-control" placeholder="Full Name"> 
      </div> 
</form> 

ich auch eine String-Datei haben Multi-Sprache und die Art, wie ich die Zeichenfolge für die Übersetzung nennen zu unterstützen ist lang ("some_string ");. Die Datei land.twig wird von einem Controller gerendert. Meine Frage ist, wie kann ich lang ("some_string") innerhalb Platzhalterattribut für HTML-Elemente in dieser Zweigdatei hinzufügen?

Antwort

3

Sie könnten Twig_SimpleFilter verwenden.

require_once '/path/to/lib/Twig/Autoloader.php'; 
Twig_Autoloader::register(); 

$loader = new Twig_Loader_Filesystem('/path/to/templates'); 
// an anonymous function 
$filter = new Twig_SimpleFilter('lang', function ($string) { 
    //do stuff 
    return $string; 
}); 

$twig = new Twig_Environment($loader); 
$twig->addFilter($filter); 

Dann in Ihrer Vorlage können Sie

<input type="text" class="form-control" placeholder="{{ 'Full Name'|lang }}"> 

verwenden Da Sie schlank verwenden und seine Zweig Integration müssen Sie den Filter in der Zweig-Komponente hinzufügen.

// Register component on container 
$container['view'] = function ($container) { 
    $view = new \Slim\Views\Twig('path/to/templates', [ 
     'cache' => 'path/to/cache' 
    ]); 
    $view->addExtension(new \Slim\Views\TwigExtension(
     $container['router'], 
     $container['request']->getUri() 
    )); 

    $filter = new Twig_SimpleFilter('lang', function ($string) { 
     //do stuff 
     return $string; 
    }); 

    $view->getEnvironment()->addFilter($filter); 

    return $view; 
}; 

Andere als dieser Zweig hat eine i18n extension.

+0

Wohin soll ich diese anonyme Funktion setzen? in der Bootstrap-Datei? –

+0

Egal wo. Wo auch immer Sie Ihre Zweigumgebung definieren, müssen Sie danach den Filter definieren. –

+0

Bearbeitete die Post. Im Grunde sagt Zweig, wo die Vorlagen zu finden sind. http://twig.sensiolabs.org/doc/api.html) Wenn Sie bereits gerenderte Seiten in einem Zweig erstellt haben, sollten Sie dies bereits getan haben. –