php codeigniter 语言,php – codeigniter模板引擎,包括语言解析器

"该博客介绍了如何在CodeIgniter(CI)中扩展内置的模板解析器类,以实现类似Smarty或Twig的模板引擎功能。通过创建MY_Parser库,使用正则表达式匹配并用语言文件中的对应行替换模板中的特定语言键,如{_password}
摘要由CSDN通过智能技术生成

不幸的是,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部分所述.

Stencil 是一个 CodeIgniter模板引擎,通过简单可靠的方式来渲染 HTML 页面。 控制器: <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Home extends CI_Controller {     public function __construct()     {         parent::__construct();         $this->stencil->layout('home_layout');         $this->stencil->slice('header');         $this->stencil->slice('footer');     }     public function index()     {         $this->stencil->title('Home Page');         $this->stencil->js('some-plugin');         $this->stencil->js('home-slider');         $this->stencil->css('home-slider');         $this->stencil->meta(array(             'author' => 'Nicholas Cerminara',             'description' => 'This is the home page of my website!',             'keywords' => 'stencil, example, fun stuff'         ));         $data['welcome_message'] = 'Welcome to my website using Stencil!';         $this->stencil->paint('home_view', $data);     } } /* End of file home.php */ /* Location: ./application/controllers/home.php */ 模板: <!doctype html> <html> <head>     <!-- robot speak -->         <meta charset="utf-8">     <title><?php echo $title; ?> | My Stencil Website</title>     <?php echo chrome_frame(); ?>     <?php echo view_port(); ?>     <?php echo apple_mobile('black-translucent'); ?>     <?php echo $meta; ?><!-- //loads data from $this->stencil->meta($args) in controller -->     <!-- icons and icons and icons and icons and icons -->     <?php echo favicons(); ?>     <!-- crayons and paint -->       <?php echo add_css(array('bootstrap', 'style')); ?>     <?php echo $css; ?><!-- //loads data from $this->stencil->css($args) in controller -->     <!-- magical wizardry -->     <?php echo jquery('1.9.1'); ?>     <?php echo shiv(); ?>     <?php echo add_js(array('bootstrap.min', 'scripts')); ?>     <?php echo $js; ?><!--  //loads page specific $this->stencil->js($args) from Controller (see docs) --> </head> <!-- $body_class will always be the class name --> <body class="<?php echo $body_class; ?>">     <header>         <?php echo $header; ?>     </header>     <h1><?php echo $welcome_message; ?></h1>     <section class="content">         <?php echo $content; ?><!-- This loads home_view -->     </section>     <footer>         <?php echo $footer; ?>     </footer> </body> </html> 标签:Stencil
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值