YII2 整合smarty

最近 在研究YII2这个框架,主要研究了下,依赖注入(DI或者IOC)和事件(AOP),这个框架对于之前做过java编程的人来说无疑是最好的,因为它的风格和Spring结构是一样的设计,本人以前就是从事java开发的,所以接触了这个框架之后很是喜欢,用着很顺手,比CI框架好了很多,TP虽然也是面向对象的,但是跟YII比起来,代码方面还是差了点,YII简洁的代码,用着很舒服,因为YII放弃了对smarty的整合,使用原生的PHP,提高了编译效率,但是,毕竟前端和后端是分开的,使用smarty对前端来说是最好的选择,整合smarty官方建议直接使用composer下载,但是我讨厌这样于是自定义进行了整合:

首先,下载smarty模版百度一下,下载一个吧,这里就不做连接了。

将smarty压缩包解压放到一个自己定义的扩展文件夹,我放在了YII默认的 frontend/libs/smarty(自己创建)下面,然后在libs下面定义一个smarty的子类来扩展smarty为

CSmarty.php

namespace frontend\libs;
 	use Yii;
	define("BASEPATH",\Yii::$app->basePath);
    require_once \Yii::$app->basePath."/libs/smarty/Smarty.class.php";
     define('SMARTY_TMPDIR',BASEPATH.'/views/templates/');//放置模版的目录 //自己创建
     define('SMARTY_CACHEDIR',BASEPATH . '/views/template_cache/');//缓存文件目录
     define('LIFTTIME',1800);
     define('SMARTY_DLEFT', '<{');//左限定符
     define('SMARTY_DRIGHT', '}>');//右限定符

    class CSmarty extends \Smarty{

        protected static $_instance = NULL;

        static function getInstance(){
            if(self::$_instance == NULL){
                self::$_instance = new CSmarty();
            }
            return self::$_instance;
        }

        function __construct(){
            parent::__construct();

            $this->template_dir = SMARTY_TMPDIR;
            $this->compile_dir = SMARTY_COMPILE;
            $this->config_dir = SMARTY_CONFIG;
            $this->compile_check = true;
            $this->caching = 1;
            $this->cache_dir = SMARTY_CACHEDIR;
            $this->left_delimiter  =  SMARTY_DLEFT;
            $this->right_delimiter =  SMARTY_DRIGHT;
            $this->cache_lifetime = LIFTTIME;

        }
        function init(){

        }
     }

配置frontend/config/main.php

<?php
$params = array_merge(
    require(__DIR__ . '/../../common/config/params.php'),
    require(__DIR__ . '/../../common/config/params-local.php'),
    require(__DIR__ . '/params.php'),
    require(__DIR__ . '/params-local.php')
);
//配置自己需要的组建
return [
    'id' => 'app-frontend',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'controllerNamespace' => 'frontend\controllers',
    'components' => [
        'user' => [
            'identityClass' => 'common\models\User',
            'enableAutoLogin' => true,
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'errorHandler' => [
            'errorAction' => 'site/error',
        ],
        'cache'=>[

                'class' =>'yii\\caching\\FileCache'
        ],
        'mailer'=>[

            'mailer' =>'yii\\mail\\BaserMailer'
        ],
         'urlManager' => [
            'class' => 'yii\web\urlManager',
            'enablePrettyUrl' => true,
        ],
        'smarty'=>[

                    'class'=>'frontend\libs\CSmarty'//将自己定义CSmarty的命名空间放在这里
        ],

    ],

    'params' => $params,
];

最后一步就可以引用smarty了

 public function actionTest(){

      $smarty = \Yii::$app->smarty;
      $smarty->assign('name','HelloSmarty');
      $smarty->display("index.html");
}

访问自己的控制器就会跳转到自己定义的模版了:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 06:18:17

YII2 整合smarty的相关文章

ThinkPHP整合Smarty模板引擎的使用以及查询方法汇总

其实说到整合smarty我们根本就没有作什么,要做的主要还是对于模板分配各种变量的使用,这才是重点,其次还有一些配置信息要自己去填写;先说一下配置,同样的,在主目录的common下面的config文件,把配置信息写入里面就可以了,其中主要有下面一下的配置信息. 'TMPL_ENGINE_TYPE'      =>  'Smarty', //'TMPL_L_DELIM'          =>  '<{',            // 模板引擎普通标签开始标记 //'TMPL_R_DELI

ThinkPHP3.2.3整合smarty模板(二)

前言:继ThinkPHP3.2.3整合smarty模板(一)之后,继续来探讨一下tp框架整合smarty模板,看到有人在群上问到怎么使用自定义的常量,今天就具体来谈谈: 一.开发一个项目,必不可少会用到很多的自定义常量,比如定义一些常量作为引入静态文件,但在smarty模板中怎么直接使用这些常量呢? 1.定义常量:如:define('__IMAGE__', __STATIC__ . '/img'),在入口文件定义或者其他文件定义这个都无所谓,若在其他文件定义,则需要引入一下; 2.在模板中使用常

ThinkPHP3.2.3整合smarty模板(一)

一.php模板引擎有哪些? 1.1 PHPLIB:一套古老且主流的模板引擎,直接在html中使用PHP变量进行编程: 1.2 Template Blocks:一款轻巧且速度非常快的PHP模板引擎,支持xml语法: 1.3 TinyButStrong:肖墙模板,业界非常著名好用的模板引擎,直接支持Dreamweaver插件编辑: 1.4 Rain TPL:易于使用和安装引擎,有6个标签,3个PHP函数和2个PHP类,支持对模板中的相对路径自动转换为绝对路径: 1.5 PHPTAL:是一个ZPT的P

codeigniter整合smarty

CI3.0.2已经发布,但是模板类还是不怎么好用,而且不能编译.Smarty目前最新版为3.1.27,Smarty功能强大,用习惯了Smarty标签,一般难以放弃,而且,是可以编译文件执行,速度快,我们可以把它们整合使用,弥补CI的模板功能的不足.我们整合的都是目前的最新版,CI版本3.0.3及 Smarty版本3.1.27.下面描述整合过程. 1.下载smarty-3.1.272 .解压smarty-3.1.27到CI项目中的application\libraries下面,其他的文件删除. 3

mac下yii2安装Smarty模板

在项目根目录输入命令: php composer.phar require --prefer-dist yiisoft/yii2-smarty 如果报错 Could not open input file: composer.phar 则重新输入命令:omposer  require --prefer-dist yiisoft/yii2-smarty config下web.php的components里进行配置: 'view' => [ 'renderers' => [ 'tpl' =>

框架开发(三)---smarty整合

一 smarty 是什么 Smarty是一个PHP的模板引擎.更明确来说,它可以帮助开发者更好地 分离程序逻辑和页面显示.最好的例子,是当程序员和模板设计师是不同的两个角色的情况,而且 大部分时候都不是同一个人的情况.smarty 从开发层面上保证了程序员的"单一职责性Single"和"接口隔离 Interface Separate",PHP程序员更集中于逻辑处理,前端程序员更集中于页面展示.程序员修改业务逻辑不会影响前台显示,页面工程师修改页面不会影响逻辑. 二

yii2超好用的日期组件和时间组件

作者:白狼 出处:http://www.manks.top/yii2_datetimepicker.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.原文有图片.日期组件,时间组件在平时开发中是必不可少的.今天我们就来谈谈在yii2中的超好用的时间组件,也省的大家各种找js插件了. 分享之前我们先预览下效果,看看到底怎么个好用法.当然啦,好用不好用在于自我的感觉,光看上面的图片是感受不到的.再告诉你个好消息,这两款插

20150211--Smarty2-02

三.综合案例--PHP+Smarty完成数据分页 1.数据库设计 p_id int p_title varchar p_addtime int 2.设计HTML界面(ok) 3.编写程序 fenye.php  fenye.html 效果: 四.程序篇 常量 变量 常用方法 缓存控制技术 1.常量 SMARTY_DIR 2.变量 $template_dir :模板路径 $compile_dir :编译目录 $config_dir :配置文件目录 $cache_dir :缓存目录 $left_del

20150211--Smarty2-01

模板引擎--Smarty下 目录 模板引擎--Smarty下 1 一.内建函数 2 1.if-elseif-else-if 2 2.ldelim.rdelim 2 3.literal 3 4.php 3 5.section 4 6.strip 6 二.自定义函数(plugins) 7 1.counter 7 2.cycle 8 3.debug 8 4.fetch 9 5.html_image 10 6.html_table 10 7.html_checkboxes复选框 10 8.html_op