chức năng Volt đóng vai trò thay thế chuỗi và không thực sự gọi hàm cơ bản. Volt dịch hàm thành chuỗi có liên quan mà ngược lại được PHP giải thích.
Giả sử bạn có một lớp Locale
trong đó có một phương pháp translate
như vậy:
public static function translate()
{
$return = '';
if (isset(self::$_phrases[$key]))
{
$return = self::$_phrases[$key];
}
return $return;
}
Phương pháp này sử dụng các mảng nội $_phrases
để tìm chìa khóa có liên quan mà bạn vượt qua và trở về nội dung của cụm từ mà bạn muốn. Nếu không tìm thấy nó trả về một chuỗi rỗng.
Bây giờ, chúng ta cần phải đăng ký hàm trong 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
);
Lưu ý cách đăng ký tr
. Nó trả về một chuỗi \My\Locale::translate({$key})
với thông số $key
đã qua. Cú pháp Volt này sẽ được dịch sang các chỉ thị PHP và được thực hiện bởi PHP. Vì vậy chuỗi xem:
<div class='page-header'>
<h2>{{ tr('session_login_title') }}</h2>
</div>
sau Volt xử lý nó trở thành:
<div class='page-header'>
<h2><?php echo \My\Locale::translate('session_login_title') ?></h2>
</div>
Nguồn
2012-12-28 15:00:00