YII框架的使用
spit: 吐痰,吐口水, 过去式: spat
spat: 自己也能够做为一个单词, 意思是: “小打小闹”“小的吵闹”“小争吵”php
list函数,“列表”, 表示将数组中 对应的 元素值 相应的赋值给 多个变量...
explode和implode是在数组和字符串之间转换, 转换的分隔符不能为空: 若是delimiter为空, 则
会产生一个警告: empty delimiter...css
数组排序用sort, 数组倒序用array_reversehtml
yii 框架是美籍华人薛强开发的彻底免费开源的php框架. Qiang
yii 是 yes it is的首字母缩写. yee. 读做 yi: yee, easy extensible, efficient框架, 基于mvc设计模式. 纯oop的
下载地址: http://www.yiiframework.com 中文社区是: http://www.yiichina.com前端
yii仍然是index.php单入口模式, 其中的view视图层会跟 layout和一些小组件widget如treeview等交互.
而Controller控制器,则包括 Filter>atction等层次...jquery
yii的requirements目录是环境检测, 看服务器所在的环境是否知足yii的安装环境...linux
yii对php 的版本要求仍是比较低的: 只要 php version > 5.1.0 就行了, 不少集成环境都可以知足.c++
cd framework/
yiic: yii_command, 是yii的命令行脚本, yiic是linux的shell脚本, yiic.php是yiic的php脚本, yiic.bat是yiic的windows脚本.web
asset
美 ['æset] 英 ['æset
建立的yii程序的目录结构是: index.php是入口文件; assets是公共资源文件(asset['2set'] ), css, images, themes,
protected(最重要的就是这个目录: 包括conf/main.php这个是主配置文件, controllers/这个是控制器目录, models/是模型目录,
views/是视图目录)..shell
两种方案和思想, 一种是直接访问localhost,把webapp直接放在localhost下, 另外一种是放在localhost下的子目录中, 这样的好处是, 能够建立多个这样的子程序web数据库
views: 包括site/index.php, 和 layouts/main.php, 一个视图文件就是按照layouts/main.php的布局, 而后加上site/index.php中的内容组成的,
也就说, 最后生成的内容: layouts/是布局/结构, site/index.php是内容.
熟悉了tp后, 来看yii就很容i了, 能够用tp的思惟思想来学习yii, 反过来yii也能够加深对tp的理解
注意, yii的目录结构中的文件夹, 一般用的都是 "小写的" "复数", 如:views/,contrllers/, models/, commands/, components/等等
控制器的名称则是首字母大写的, 默认的是 SiteController. 方法的命名规范是: actionIndex.
class MyController extends Controller{ public function index(){ print('hello yii') ; $this->render('index'); } } 这里建立的是My控制器, 控制器文件名应该是: MyController.php,同时, 在views/目录(注意是views目录下, 不是site目录! 那里的site目录是yii给咱们的默认的 一个SiteController控制器所对应的视图文件夹), 下就应该有对应的文件夹my/. 注意控制器是首字母大写的, 而views/"控制器对应的视图目录名" 是小写的, 如这里的 MyController控制器对应的视图目录就是: views/my/. 而后, my目录下的文件如:index.php, do.php, login.php, article.php就是这个控制器类对应的方法名称,如: funtion actionIndex function actionDo(), function actionLogin(). action的命名规则, 而对应的方法视图文件要用小写的! yii默认给咱们提供了一个Site控制器和site视图子目录, 是能够直接使用的! 访问的时候, 输入的地址是: `localhost/yiidemo/index.php?r=Index/dosomething`, 其中r表示route路由, 后面跟上控制器名称和操做方法.
渲染者: render+er: renderer.
当前的yii的稳定版是1.1.17
YiiBase类中的方法基本上都是静态方法...public static function createWebApplication($config=null){ return self::createWebApplication($config);}
public和static的顺序:
jquery的find查找方法
find就是查找当前正在处理的元素的后代元素的方法。find方法,由前面的选择器指定选择范围,后面的find参数
指定选择的内容。
实际上 $(parent).find(descend)
就等同于 $(parent descend)
html方法返回的是 元素的内容,(内部的东西) 元素自己的标签是不包括的 ,如:
<p> <span> span text<strong> strong text</strong></span></p>, $('span').html(), 将会输出: span text<strong> strong text</strong>, span自己的标签并不输出,即不会输出:<span> span text<strong> strong text</strong></span>
键盘的选择仍是以“柔和, 轻柔,柔软”的为好, 那种很硬,弹簧很硬的,质地很硬的很差...
strtr: r是replace替换的意思.
yiidemo 本身项目中的入口文件是: index.php, 它首先包含 framework框架中的yii.php, require_once $yii;
,
而后建立本身的应用程序: Yii::createWebApplication($config) -> run();
, 到此, web程序就运行起来了.
而yii.php是框架下的"入口文件", 它其实是一个Yii的类, 这个类又继承自YiiBase类:
class Yii extends YiiBase {...}
最终, 由 YiiBase.php提供app的核心功能!
使用的都是Yii::createApplication($class, $config=null){ return new $class($config); }
, 返回的是一个类的对象实例;
根据这个class类名参数来决定是建立哪一种app, 若是$class是 "CWebApplication", "CConsoleApplication"...
页面的标题, 如今能够用函数来动态生成了, 只要使用pageTitle成员属性: 就行了: $this-> pageTitle = Yii::app() -> name. ' - About' ;
当gii没有权限的时候: 设置: module 设置gii的时候 不是本地的要设置容许IP 'allowedIPs' => ['127.0.0.1', '::1', '192.168.1.*', 'XXX.XXX.XXX.XXX']
gii is a magic tool that can write code for you . 是yii的自动生成 代码 的工具.
在yii中使用gii, 只须要在protected/config/main.php中, 配置gii的模块module便可..
设置默认的控制器: 在protected/config/main.php中, 加上: defaultController => 'Index';
, 并且默认的方法就是 index: function actionIndex()...
render中的layout主要是包含: 公共的 头部和尾部...
$data = array('var1' => 10, 'var2' => 20); $this -> render('index', $data); 而后在模板中使用 <?php echo $var1; ?>
来输出.<?php foreach($article as $v): ?> 注意foreach后是冒号, 不是分号或大括号; <li> <?php echo $v->title; ?>(这里注意, 若是<?php中 , 只有一条语句, 那么能够不用加 分号!) </li> <?php endforeach; ?>
在protected/中建立一个functions.php文件(或func.php文件均可以, 反正后面要包含的). 而后在里面写上自定义函数.
使用时, 在 项目的入口文件 index.php中, 包含这个自定义函数文件: include_once './protected/functions.php';
没必要只建立一个Index控制器,(虽然 你能够将不少/甚至所有逻辑业务 , 都放在一个Index控制器中,) 可是, 为了将业务逻辑分得更清楚一些, 也便于维护 , 能够多建立几个控制器,每一个业务逻辑(单元模块功能),(甚至一个页面 "生成器" ) 建立一个控制器..., 并且注意 名称的大小写, 有些大写只是框架的命名规范所要求的. 其余地方, 该用小写的仍是用小写.
使用模板布局layouts的方法和步骤是:
这个控制器中, 有几个 public的成员变量, $layout, $menu, $breadcumbs,
等, 这些能够修改, 或者重载, public $layout = "//layouts/my"
<?php echo $content ?>
, 注意这个echo content 是放在布局中的, 不是放在具体的模板中的.由于实际在渲染的时候, 是先读取 布局文件, (这就要求凡是使用布局的 页面的结构 应该是同样的! ) 而后将布局文件中的content用 实际模板中的内容来替换的.建立好本身的yii应用程序时, 里面的 css和images和themes 是示例站点的资源. 若是你要 开发本身的web 程序, 这些文件夹(css, images, themes)能够删除不要.
若是你要写了 $this->render('index');
那么就必定要有views的对应模板文件, 不然就会报错!
<?php echo Yii::app()->request->baseUrl ?>
获得的就是 项目的目录路径.
==================
modules => array( 'gii'=>array(....) );
建立时, 是访问的 index.php?r=gii, 建立完成后, 要访问后台模块: index.php?r=admin/default/index (r=模块id/控制器/方法). 并且后台模块也可使用前台的布局layouts.
$content
包含的内容中) 定义好 breadcurmbs 成员变量就行了, 不要什么echo, print的, 输出的语句是在其余框架函数中.<?php $this -> breadcrumbs = array( $this->module->id, // 注意这里要用字符串, 不能是 $this->module. 这个将会是一个模块! 报错 'other', 'other2'... ); ?> <h1> <?php echo $this->uniqueId. '/'. $this->action->id; ?> </h1>
最后生成的面包屑导航格式是: Home (默认就是从Home开始的) >>(indicator就是相似两个大于符号的) admin >> other >>other2( 所以, breadcrumbs的数组中, 有多少个元素, 就有多少级面包屑导航级数...
$this
, 都是指的 当前的控制器! 要得到控制器的方法和module , 都直接使用 $this->action->id, $this->module->id;
而要得到类自己的名称: 则要使用 get_class($this);
__FILE___
, 会把当前文件的 "完整路径 / + 文件名" 都显示出来.
一般 控制器 的 默认的 方法 都设置 设置 成 index方法: function actionIndex()..., 并且前台的目录项目名称 一般也设置成 index, 后台设置成 admin..
在视图.php文件中 <?php $form = $this -> beginWidget('CActiveForm'); echo $form -> textFiled('LoginModelObj 表单模型', '表单域的名称, 如usename, password等', '表单域的属性组成的数组: array('id'=>'username'...) ); $this->endWidget(); ?> $form中的全部方法, 都是来自于 类CActiveForm的, 而后 , LoginModel extends CFormModel 其中, 模型要在 控制器方法中, 用new LoginModel() 的方式建立出来, 而后经过renderPatial的参数 传递到视图文件中... 要注意, $form -> textFiled('model_name', 'form_field_name', array_attr) 中的 表单域的名字, 在相应的模型LoginModel中要有相应的 public 成员变量, ...