Voltでユーザー定義関数を設定するにはどうすればよいですか?Volt(Phalcon)でユーザー定義関数を設定する方法
<div class='page-header'>
<h2>{{ tr('session_login_title') }}</h2>
</div>
と私はtr
が\My\Locale::translate($key)
Voltでユーザー定義関数を設定するにはどうすればよいですか?Volt(Phalcon)でユーザー定義関数を設定する方法
<div class='page-header'>
<h2>{{ tr('session_login_title') }}</h2>
</div>
と私はtr
が\My\Locale::translate($key)
ボルト関数は、文字列の置き換えとして機能し、実際にはない機能にマッピングする。たとえば、私のような私の意見で文字列を翻訳しまう関数を呼び出したいです基礎となる関数を呼び出します。 Voltは関数を関連する文字列に変換します。関連する文字列はPHPによって解釈されます。
はあなたのようなtranslate
方法を持っているLocale
クラスがあるとします。
public static function translate()
{
$return = '';
if (isset(self::$_phrases[$key]))
{
$return = self::$_phrases[$key];
}
return $return;
}
この方法は、あなたがしたいフレーズのテキストを渡して、返すことを、関連するキーを見つけるために$_phrases
内部配列を使用しています。見つからなければ、空の文字列を返します。
ここで、関数をVoltに登録する必要があります。
$di->set(
'volt',
function($view, $di) use($config)
{
$volt = new \Phalcon\Mvc\View\Engine\Volt($view, $di);
$volt->setOptions(
array(
'compiledPath' => $config->app_volt->path,
'compiledExtension' => $config->app_volt->extension,
'compiledSeparator' => $config->app_volt->separator,
'stat' => (bool) $config->app_volt->stat,
)
);
$volt->getCompiler()->addFunction(
'tr',
function($key)
{
return "\\My\\Locale::translate({$key})";
}
);
return $volt;
},
true
);
tr
機能が登録されていることに注意してください。渡された$key
パラメータを持つ文字列\My\Locale::translate({$key})
を返します。このVolt構文はPHPディレクティブに変換され、PHPによって実行されます。したがって、ビューの列:ボルトが処理した後に
<div class='page-header'>
<h2>{{ tr('session_login_title') }}</h2>
</div>
それは次のようになります。
<div class='page-header'>
<h2><?php echo \My\Locale::translate('session_login_title') ?></h2>
</div>