一、搭建yii框架

一、首先你得下个YII框架的源码 ;下载地址:http://www.yiiframework.com/download/

二、把下载到的源码解压放到一个PHP可访问的位置;如我的 F:/site(已具备了php环境了哦!);

与此同时,在site文件夹下会看到解压到的相关文件及文件夹有:1、LICENSE 2、CHANGELOG 3、README 4、UPGRADE 5、demos 5、framework 6、requirements 7、testDemo (大概共七个)

三、解压完成后,在php.ini中开启yii所需的基本配置模块; 你可运行 requirements文件夹下的index.php文件 进行检查一下YII配置需求 ;我的为:http://site/requirements/index.php  如图(对应下,结果所对应的那一栏如果发现有“未通过”的你在在php所安装的目录下找到php.ini,把他们所对应的注释去掉即可):

php若不在C盘,应该其配置文件拷至c:\windows下;相应dll模块拷入system32下;添加php5环境变量添量path;(XP)

四、然后的话,就是配置计算机的环境变量了,也就是把php所安装的路径添加到path中去;

具体的操作步骤为:

鼠标右键我的电脑图标—>  选择弹出窗的“属性”选项-->点击“高级”选项卡—>在选项卡下面找到“环境变量选项”进入-->在“系统变量(s)”处找到变量名为“Path”双击打开编辑—> 加入php所在的安装目录即可;如我的为:C:\php5

五、好,搞定相关的配置后,接下来就是创建一个YII的应该啦;一般操作如下:

打开命令提示符cmd(可以在开始--运行--输入cmd 回车即可) —> 进入yii 所在文件下的framework文件夹 如我的为:F:/site/framework,如下图:

--> 执行命令在site下创建站点名为“demo”的应用(操作为:执行命令—yiic webapp ../demo)回车如下图:

--> 输入“yes” 或“y” 即可创建 ---> 回车后出现那么的一堆东西,主要下最下面,如果是这样就是成功了,如图:

--> 浏览器上进行http://site/demo/index.php  看到这样(如下图),那么恭喜你,一个静态的站点你建立成功了;

TIPS:在运行 http://site/demo/index.php 时,你有可能会遇到,打不开,出现date();的问题,放心,别紧张,follow me…

找到PHP所在安装目录中的php.ini文件---> 打开找到“date.timezone” –> 把前面的注释去掉并给其赋值为PRC(即中华人民共和国的意思),修改后,整行即为date.timezone = 'PRC' [北京时间]

二、搭建smarty模板引擎

1、下载Smarty包
     可以从官方站点下载:http://smarty.php.net

2、解压缩Smarty包并找到合适的位置存放.解压之后文件夹名可能是Smarty.x.x.x,把它修改成smarty(此处只为将来使用方便起见,并非必须),然后将含有Smarty文件的文件夹拷贝到某一个目录下(建议不要放在你的网站目录下,这样别人可以通过路径访问到这些文件,如果非要放在网站目录下,那最好目录的名字起的生僻一些。这些文件即使被别人访问到,也未必造成安全问题,但是一切都为了以防万一)。
    在文章的下面内容中,我们都是假设你的文件放在了d:\smarty下。

3、找到你的php.ini配置文件(可以通过运行phpinfo()查看此文件路径,但一般都放在系统目录下)修改php.ini的include_path选项,把smarty的库文件路径加上,比如:
    include_path = ".;d:\smarty\libs"
    提醒一下,php.ini中一共有两处include_path,一处是Unix下使用的,一处是windows下使用的,要修改windows下使用的:
-------------------------------------------------------------
; Windows: "\path1;\path2"

include_path = ".;c:\php\includes;D:\PHP\Smarty\libs"
--------------------------------------------------------------
4、重新启动IIS/APACHE,重新启动的目的是使刚才的修改生效。
重新启动的方法很简单,APACHE直接restart即可。对于IIS,可以用net stop iiadmin命令关闭iis,然后用net start w3svc命令启动,就完成了重新启动。如果实在不会重启,就干脆重新启动计算机,这样最省事。
设置之后,在php文件中可以用include("Smarty.class.php");语句直接调用。

5、在你的网站目录下创建一个文件夹,名字任意,假设叫MySmarty:
    然后再在这个MySmarty目录下创建2个文件夹,templates和configs。
    创建完成之后如下:
    (你的网站目录)/MySmarty/templates     (这个目录用来存放模版)
    (你的网站目录)/MySmarty/configs   (这个目录用来存放一些配置信息)

6、在MySmarty目录下再创建两个文件夹,名字分别叫:smarty_cache和smarty_templates_c。为什么刚才不一起创建呢?因为这个步骤在原来的官方资料中没有,而我在配置过程中发现,如果没有这两个文件夹,smarty将无法工作,不知道是不是官方资料的smarty版本和目前最新的版本有出入的原因。但是只要配置这两个目录,Smarty便可以顺利工作。因此建议进行配置。

7、这时候你别忘了把我们上面从一开始到现在创建的四个文件夹的权限设置好。当然还包括存放smarty的文件夹d:\smarty的权限,因为有的NTFS格式的系统有严格的权限规定,你的目录创建之后还得有足够的权限才能让web程序访问。一般来说win2000和win2003下采用NTFS分区格式的系统需要做这样的设定,具体方法是在文件夹上点击右键,在“属性”中打开“安全”标签,在里面列出了可以访问这个目录的用户列表,如果没有web访问权限,则需要添加,把Internet来宾帐户和启动IIS进程帐户两个帐户都添加上即可。如果觉得麻烦,可以直接将Everyone用户组添加上,允许任何用户访问。

8、这时候安装工作基本完成,可以进行第一个简单例子的测试:
    在你的网站目录下建立 index.php文件,并且在(网站目录)/smarty/templates/下建立index.tpl文件,分别输入以下代码   index.php

<?php
   //载入Smarty库
   include("Smarty.class.php");
   $smarty = new Smarty();
   //下面的(你的网站目录)用绝对路径,比如d:/intepub/wwwroot
   $smarty->template_dir = 'D:/WorkSpace/PHP/MySmarty/templates';
   $smarty->config_dir = 'D:/WorkSpace/PHP/MySmarty/config';
   $smarty->cache_dir = 'D:/WorkSpace/PHP/MySmarty/smarty_cache';
   $smarty->compile_dir = 'D:/WorkSpace/PHP/MySmarty/smarty_templates_c';
   //上面四行为使用Smarty前的必要参数配置
   $smarty->assign('name','跟17PHP学安装Smarty');
   $smarty->display('index.tpl');
?>
templates文件夹下
   index.tpl
   <html>
   <body>
   你好,{$name}!
   </body>
   </html>

9、现在终于可以观看以下自己的杰作了。运行index.php(当然是在你的web服务器上运行,和运行普通php文件完全一样。)
   http://localhost/index.php
   这时候如果看到下面的输出结果,说明你安装成功了~~~是不是很简单呢?
   你好,跟17PHP学安装Smarty!

后记:虽然到此为止Smarty的安装已经完成,但是站长还是想给大家一点小建议。在上面的小例子中,可以发现如果我们每次使用Smarty前都需要设置参数,那未免过于麻烦。这时候你可以把smarty信息设置的四行代码包裹在一个类或者一个包含文件当中。这样就不用每次使用前都首先配置信息。关于这个就是Smarty的使用知识了,本篇文章不再涉及。站长目前也处在学习过程中,等到后面再继续推出和Smarty相关的文章吧~~~

三、整合

1. 在protected目录下建立文件夹vendor/smarty,把smarty的类包libs文件夹内容放入其中;

2. 在extensions目录下边建立文件CSmarty.php

CSmarty.php文件具体内容如下(意思自己体会理解):

<?php

require_once(Yii::getPathOfAlias('application.vendor.smarty').DIRECTORY_SEPARATOR.'Smarty.class.php');

define('SMARTY_VIEW_DIR',Yii::getPathOfAlias('application.views.smarty'));

class CSmarty extends Smarty {

const DS =DIRECTORY_SEPARATOR;

function __construct() {

parent::__construct();

$this->template_dir =SMARTY_VIEW_DIR.self::DS.'tpl';

$this->compile_dir =SMARTY_VIEW_DIR.self::DS.'tpl_c';

$this->caching = true;

$this->cache_dir =SMARTY_VIEW_DIR.self::DS.'cache';

$this->left_delimiter =  '{';

$this->right_delimiter = '}';

;

}

function init() {}

}

3. 根据CSmarty.php代码内容建立相应的文件夹(views下tpl,tpl_c,cache)

4. 主配置文件设置

打开protected/config/main.php

在components数组中加入

'smarty'=>array(

'class'=>'application.extensions.CSmarty',

),

5. 得到smarty实例 (修改actionindex函数)

在控制器(protected/components/controler或controler/site)里边:

public function actionIndex(){

Yii::app()->smarty-> assign('name','张三');   //Yii::app()->smarty(); (X)

Yii::app()->smarty-> display('a.tpl');

}

a.tpl所在目录protected/views/smarty/tpl/a.tpl,具体代码{$name}

<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
 <title>你好,{$name}!</title>
 </head>
 <body>
 你好,{$name}!
 </body>
 </html>

此时系统会报错:

 

原因:YII注册了一个自动加载类spl_autoload_register(array('YiiBase','autoload')),SMARTY也注册了一个自动加载类,spl_autoload_register('smartyAutoload'),YII 注册在前,这样在遇到一个类名的时候,先执行的是YII的自定义自动加载类的函数,对应SMARTY里的每个类名而言,也是先调用YII的自动加载类的函 数,但是如果不符合YII自动加载的条件的话,就会执行SMARTY的自动加载类的函数,然而,SMARTY的类名在自动加载类的时候,确符合了YII自 动加载类的逻辑语句,结果就是YII使用Include语句要包含的类肯定找不到。

解决方法:

当SMARTY的类自动加载的时候,跳出在YII定义的自动加载函数,这样就会执行SMARTY的加载函数。

具体实现是,修改YIIBase类(frame目录下)里面的autoload函数,增加如下代码:

  public static function autoload($className){

//只要类名包含smarty的,无论大小写,都返回,

//这样就跳出了YII自动加载类而去执行SMARTY的自动加载类函数了

  if(preg_match('/smarty/i', $className)){

    
return;

}

再次测试:OK

6. 优化(通过)

在action中直接用Yii::app()->smarty就可以试用smarty了。

如果每次在action中使用Yii::app()->smarty比较麻烦的话,

可以在components下的Controller中可以加入

protected $smarty = '';

protected function init() { ------public????

$this->smarty = Yii::app()->smarty;

}

然后在action中就直接可以用$this->smarty使用smarty了。

Yii框架-Smarty-整合的更多相关文章

  1. Yii框架学习笔记(二)将html前端模板整合到框架中

    选择Yii 2.0版本框架的7个理由 http://blog.chedushi.com/archives/8988 刚接触Yii谈一下对Yii框架的看法和感受 http://bbs.csdn.net/ ...

  2. PHP Yii框架中使用smarty模板

    第一种方法 按照YII系统的办法生成视图觉得有点麻烦,觉得用smarty更省事.尝试着把smarty模板加进来了. date_default_timezone_set("PRC") ...

  3. 使用 OAuth2-Server-php 在 Yii 框架上搭建 OAuth2 Server

    原文转自 http://www.cnblogs.com/ldms/p/4565547.html Yii 有很多 extension 可以使用,在查看了 Yii 官网上提供的与 OAuth 相关的扩展后 ...

  4. Yii 框架学习--01 框架入门

    Yii 是一个高性能的,适用于开发 WEB2.0 应用的 PHP 框架. Yii目前有两个主要的版本: 2.0 和 1.1.本文以YII 2.0.7为例. 环境需求 Yii2.0 框架有一些系统上的需 ...

  5. yii框架

    Yii Framework是一个基于组件.用于开发大型 Web 应用的高性能 PHP 框架.Yii提供了今日Web 2.0应用开发所需要的几乎一切功能.Yii是最有效率的PHP框架之一.Yii是创始人 ...

  6. YII框架的使用

    YII框架的使用 spit: 吐痰,吐口水, 过去式: spat spat: 本身也可以作为一个单词, 意思是: "小打小闹""小的吵闹""小争吵&q ...

  7. 三大框架SSH整合

    三大框架SSH整合 -------------------------------Spring整合Hibernate------------------------------- 一.为什么要整合Hi ...

  8. yii框架安装心得

    最近在学习yii框架, 现在将遇到的一些问题和解决方法写出来与大家分享. yii框架的安装: 下载yii框架之后, 打开文件运行init.bat文件, 如果闪退就打开php的扩展(php_openss ...

  9. Yii框架 400 错误

    YII  400错误 在YII框架中400错误是csrf校验失败的意思 csrf是什么? CSRF(Cross-site request forgery跨站请求伪造,也被称为"One Cli ...

随机推荐

  1. cocos2dx 初探 - VS2012 HELLOWORLD

    最近决定用cocos2dx 来做些试验性的东西,先装了个vs2012 再从网上下了cocos2dx-2.1.4就开工了. 仅是Windows 桌面调试还是很简单的. 上面三个项目源: Hellocpp ...

  2. day20 在php中通过php语句操作数据库

    第一步:连接数据库服务器 mysql_connect("数据库服务器地址","用户名","密码") 第二步:设定跟数据库打交道的网页的编码 ...

  3. PHP 类和继承

    //定义一个超类 //public 和 protectd属性和方法可以继承,private不可继承. class A{ public $a =0; private $b = 1; protected ...

  4. Java知识总结--JDBC&XML

    1说说jdbc连接数据库的步骤 1.注册驱动 2.获得连接 3.执行sql语句 4.获得结果集,进行结果集的处理 5.关闭结果集 6.关闭连接,释放资源 2 statement 和preparedst ...

  5. 青瓷qici - H5小游戏 抽奖机 1 素材

    素材链接… 我们准备好所有素材 青瓷的素材引入,可以通过拖动的方式.我们打开windows的资源管理器,所有素材拖动到texture里面 框架会帮你进行预处理方便加载 我们在atlas文件夹里面新建目 ...

  6. compass(sass)+seajs+frozenui+frozenjs+svn主干分支

    1.compass框架 sass编译 1.compass create 项目名 2.cd目录,执行compass watch 2.frozen框架 js(frozen.js),css(global.c ...

  7. (转载)Delphi开发经验谈

    Delphi开发经验谈 开发环境-------- Delphi 7是一个很经典的版本,在Win2000/XP下推荐安装Delphi 7来开发软件,在Vista下推荐使用Delphi 2007开发软件. ...

  8. Sersync实时同步企业应用配置实战

    一.实验环境 CentOS版本: 6.6(2.6.32.-504.el6.x86_64) Rsync版本:  Rsync-3.0.6(系统自带) Sersync版本:sersync2.5.4_64bi ...

  9. 网络设备作用和工作ISO层

    物理层——中继器和集线器 二者都起数字信号放大和中转的作用. 中继器 Repeater 用来延长网络距离的互连设备.REPEATER可以增强线路上衰减的信号,它两端即可以连接相同的传输媒体,也可以连接 ...

  10. JS的this本质

    1.this究竟为何物? 1.1 全局上下文(Global context ) 在全局运行上下文中(在任何函数体外部),this 指代全局对象window,无论是否在严格模式下. alert(this ...