2016-08-18 6 views
2

Slim Frameworkを初めて使用しています。また、テンプレート化にはtwigを使用しています。 「(some_stringを私は、そのファイルの内容が.twigファイルのslim frameworkでPHPコードを使用する

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

あるland.twigファイルは、私はまた、多言語をサポートするために、文字列ファイルを持っていると私は翻訳のための文字列を呼び出す方法がLANGです");land.twigファイルはコントローラによってレンダリングされます。私の質問は、そのtwigファイルのhtml要素のプレースホルダ属性内に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

ここで私はこの無名関数を入れますか?ブートストラップファイルには? –

+0

どこからでも問題ありません。あなたの小枝の環境を定義するところでは、定義しなければならず、後でフィルタを定義する必要があります。 –

+0

投稿を編集しました。基本的には、テンプレートを見つける場所をtwigに伝えます。 http://twig.sensiolabs.org/doc/api.html)既に小枝でレンダリングされたページを取得したら、すでにこれを行っているはずです。 –

関連する問題