Twigテンプレートの変数の中で変数をevalするフィルタがとても便利なので紹介します。
Twig > Extension > Evalute.php で保存
<?php
class Twig_Extension_Evaluate extends \Twig_Extension {
public function getFilters( ) {
return array(
'evaluate' => new \Twig_Filter_Method( $this, 'evaluate', array(
'needs_environment' => true,
'needs_context' => true,
'is_safe' => array(
'evaluate' => true
)
))
);
}
public function evaluate( \Twig_Environment $environment, $context, $string ) {
$loader = $environment->getLoader( );
$parsed = $this->parseString( $environment, $context, $string );
$environment->setLoader( $loader );
return $parsed;
}
protected function parseString( \Twig_Environment $environment, $context, $string ) {
$environment->setLoader( new \Twig_Loader_String( ) );
return $environment->render( $string, $context );
}
public function getName( ) {
return 'evaluate';
}
}
$twig->addExtension( new Twig_Extension_Evaluate() );
{% set var = 'inner variable' %}
{{'this is a string with an {{var}}'|evaluate}}
↓
this is a string with an inner variable
このような書き方もできます(ハッシュのメンバ名が変数の時に展開する)
$data['column_name'] = "data_id";
$data['data_hash']['data_id'] = 999;
{{data_hash[column_name]|evaluate}}
↓
999
引用 : http://goo.gl/Y1LlSz