不幸的是,CI内置的模板解析器类没有此功能.你可以在
sparks directory中环顾四周,有多个火花集成了许多模板引擎,如smarty或twig,可以通过调整来创建这样的东西.
此外,您可以尝试扩展CI_Parser类来为您执行此操作,如下所示:
class MY_Parser extends CI_Parser {
const LANG_REPLACE_REGEXP = '!\{_\s*(?[^\}]+)\}!';
public $CI = null;
public function parse($template, $data, $return = FALSE) {
$this->CI = get_instance();
$template = $this->CI->load->view($template, $data, TRUE);
$template = $this->replace_lang_keys($template);
return $this->_parse($template, $data, $return);
}
protected function replace_lang_keys($template) {
return preg_replace_callback(self::LANG_REPLACE_REGEXP, array($this, 'replace_lang_key'), $template);
}
protected function replace_lang_key($key) {
return $this->CI->lang->line($key[1]);
}
}
这将使用$this-> lang-> line(‘password’)替换{_ password}之类的部分.可以针对您喜欢的版本调整模式.
将其置于application / libraries / MY_Parser.php和CI之下应该选择它,不需要更改控制器代码,如Extending Native Libraries部分所述.