2016-08-18 46 views
2

我第一次使用Slim框架,也使用樹枝進行模板化。我有一個land.twig文件該文件的內容是在.twig文件中使用php代碼slim框架

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

我也有一個字符串文件,支持多語言,我稱之爲翻譯的字符串的方法是郎(「some_string 「);。該文件由控制器呈現。我的問題是如何在該twig文件中的html元素的placeholder屬性中添加lang(「some_string」)?

回答

3

你可以使用Twig_SimpleFilter。

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

然後在你的模板由於您使用的超薄和樹枝集成,您必須在樹枝組件中添加過濾器,你可以使用

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

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

除了那個樹枝有一個i18n extension

+0

我應該在哪裏放這個匿名函數?在bootstrap文件中? –

+0

無所謂在哪裏。無論你在哪裏定義你的樹枝環境,你都必須定義過濾器。 –

+0

編輯該帖子。基本上告訴樹枝在哪裏可以找到模板。 http://twig.sensiolabs.org/doc/api.html)當你已經在樹枝中渲染頁面時,你應該已經完成​​了。 –