yii快速入门教程(蛮实用)

上传人:206****923 文档编号:37507824 上传时间:2018-04-17 格式:DOCX 页数:42 大小:66.70KB
返回 下载 相关 举报
yii快速入门教程(蛮实用)_第1页
第1页 / 共42页
yii快速入门教程(蛮实用)_第2页
第2页 / 共42页
yii快速入门教程(蛮实用)_第3页
第3页 / 共42页
yii快速入门教程(蛮实用)_第4页
第4页 / 共42页
yii快速入门教程(蛮实用)_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《yii快速入门教程(蛮实用)》由会员分享,可在线阅读,更多相关《yii快速入门教程(蛮实用)(42页珍藏版)》请在金锄头文库上搜索。

1、、基本概念、基本概念一、入口文件一、入口文件 入口文件内容:一般格式如下: run();/根据主配置文件建立应用实例,并运行。你可以 在当前应用的任何位置通过 Yii:app()来访问这个实例。二、主配置文件二、主配置文件 保存位置:你的应用/protected/config/main.php 文件内容:一般格式如下: dirname(_FILE_).DIRECTORY_SEPARATOR., /当前应用根目录的绝对物理路 径name=Yii Blog Demo, /当前应用的名称/ 预载入 log(记录)应用组件,这表示该应用组件无论它们是否被访问都要被创建。 该应用的参数配置在下面以“co

2、mponents”为关键字的数组中设置。preload=array(log), /log 为组件 ID/ 自动载入的模型和组件类import=array(application.models.*, /载入“application/models/”文件夹下的所有模型类ponents.*, /载入“application/components/”文件夹下的所有应用组件类),defaultController=post, /设置默认控制器类/ 当前应用的组件配置。更多可供配置的组件详见下面的“核心应用组件”components=array(user=array( /user(用户)组件配置, “us

3、er”为组件 ID/ 可以使用基于 cookie 的认证allowAutoLogin=true, /允许自动登录),cache=array( /缓存组件class=CMemCache, /缓存组件类servers=array( /MemCache 缓存服务器配置array(host=server1, port=11211, weight=60), /缓存服务器 1array(host=server2, port=11211, weight=40), /缓存服务器 2),),db=array( /db(数据库)组件配置, “db”为组件 IDconnectionString = sqlite:p

4、rotected/data/blog.db, /连接数据库的 DSN 字符串tablePrefix = tbl_, /数据表前缀),/ 如果要使用一个 MySQL 数据库,请取消下面的注释errorHandler=array(/ 使用 SiteController 控制器类中的 actionError 方法显示错误errorAction=site/error, /遇到错误时,运行的操作。控制器名和方法名均小写,并 用斜线“/”隔开),/URL 路由管理器urlManager=array(urlFormat=path, /URL 格式。 共支持两种格式:path格式(如: /path/to/En

5、tryScript.php/name1/value1/name2 /value2.)和get格式(如: /path/to/EntryScript.php?name1=value1核心应用组件: Yii 预定义了一系列核心应用组件,提供常见 Web 应用中所用的功能。例如, request 组 件用于解析用户请求并提供例如 URL,cookie 等信息。通过配置这些核心组件的属性,我 们可以几乎任意的修改 Yii 的默认行为。下面我们列出了由 CWebApplication 预定义的核心组件。 assetManager: CAssetManager - 管理私有资源文件的发布。 authMana

6、ger: CAuthManager - 管理基于角色的访问控制 (RBAC). cache: CCache - 提供数据缓存功能。注意,你必须指定实际的类(例如 CMemCache, CDbCache) 。否则,当你访问此组件时将返回 NULL。 clientScript: CClientScript - 管理客户端脚本 (javascripts 和 CSS). coreMessages: CPhpMessageSource - 提供 Yii 框架用到的核心信息的翻译。 db: CDbConnection - 提供数据库连接。注意,使用此组件你必须配置其 connectionString 属性

7、。 errorHandler: CErrorHandler - 处理未捕获的 PHP 错误和异常。 format: CFormatter - 格式化数值显示。此功能从版本 1.1.0 起开始提供。 messages: CPhpMessageSource - 提供 Yii 应用中使用的信息翻译。 request: CHttpRequest - 提供关于用户请求的信息。 securityManager: CSecurityManager - 提供安全相关的服务,例如散列,加密。 session: CHttpSession - 提供 session 相关的功能。 statePersister: CS

8、tatePersister - 提供全局状态持久方法。 urlManager: CUrlManager - 提供 URL 解析和创建相关功能 user: CWebUser - 提供当前用户的识别信息。 themeManager: CThemeManager - 管理主题。要访问一个应用组件,使用 Yii:app()-组件的 ID 三、控制器(三、控制器(Controller) 控制器 是 CController 类的子类的实例。它在当用户请求时由应用创建。当一个控制器运 行时,它执行所请求的动作(控制器类方法) ,动作通常会引入所必要的模型并渲染相应的 视图。 动作,就是一个名字以 actio

9、n 开头的控制器类方法(action+大写首字母的动作名) 。控制器类文件保存位置 protected/controllers/ 控制器和动作以 ID 识别。 控制器 ID 是一种 父目录/子目录/控制器名 的格式,对应相应的控制器类文件 protected/controllers/父目录/子目录/大写首字母的控制器名 Controller.php; 动作 ID 是除去 action 前缀的动作方法名。 1、路由 用户以路由的形式请求特定的控制器和动作。路由是由控制器 ID 和动作 ID 连接起来的, 两者以斜线分割。 例如,路由 post/edit 代表 PostController 及其

10、edit 动作。默认情况下,URL http:/hostname/index.php?r=post/edit 即请求此控制器和动作。注意: 默认情况下,路由是大小写敏感的。可以通过设置应用配置中的 CUrlManager:caseSensitive 为 false 使路由对大小写不敏感。当在大小写不敏感模式中时,要确保你遵循了相应的规则约定,即:包含控制器类文件的目录名小写,且 控制器映射和 动作映射 中使用的键为小写。 路由的格式:控制器 ID/动作 ID 或 模块 ID/控制器 ID/动作 ID(如果是嵌套模块,模块 ID 就是 父模块 ID/子模块 ID) 2、控制器实例化 应用将使用如

11、下规则确定控制器的类以及类文件的位置: 1、如果指定了 CWebApplication:catchAllRequest , 控制器将基于此属性创建,而用户指定 的控制器 ID 将被忽略。这通常用于将应用设置为维护状态并显示一个静态提示页面。 2、如果在 CWebApplication:controllerMap 中找到了 ID, 相应的控制器配置将被用于创建 控制器实例。 3、如果 ID 为 path/to/xyz的格式,控制器类的名字将判断为 XyzController,相应的类文 件则为 protected/controllers/path/to/XyzController.php。如果类

12、文件不存在,将触发一个 404 CHttpException 异常。 在使用了模块的情况下,应用将检查此 ID 是否代表一个模块中的控制器。如果是的话, 模块实例将被首先创建,然后创建模块中的控制器实例。 3、动作(action) 动作 就是被定义为一个以 action 单词作为前缀命名的方法。而更高级的方式是定义一个 动作类并让控制器在收到请求时将其实例化。这使得动作可以被复用,提高了可复用度。 1、定义一个动作类,基本格式如下: class UpdateAction extends CAction public function run()/ place the action logic

13、here 2、使用动作类:为了让控制器注意到这个动作,我们要用如下方式覆盖控制器类的 actions() 方法: class PostController extends CController public function actions()return array(edit=application.controllers.post.UpdateAction, /使用“应用程序文件夹 /controllers/post/UpdateAction.php”文件中的类来处理 edit 动作); 如上所示,我们使用了路径别名“application.controllers.post.Update

14、Action”指定动作类文件 为“protected/controllers/post/UpdateAction.php”。 通过编写基于类的动作,我们可以将应用组织为模块的风格。例如,如下目录结构可用于 组织控制器相关代码:protected/controllers/PostController.phpUserController.phppost/CreateAction.phpReadAction.phpUpdateAction.phpuser/CreateAction.phpListAction.phpProfileAction.phpUpdateAction.php4、过滤器(、过滤器

15、(filter) 过滤器是一段代码,可被配置在控制器动作执行之前或之后执行。 一个动作可以有多个过滤器。如有多个过滤器,则按照它们出现在过滤器列表中的顺序依 次执行。过滤器可以阻止动作及后面其他过滤器的执行。 过滤器可以定义为一个控制器类的方法。过滤器方法名必须以 filter 开头。例如,现有的 filterAccessControl 方法定义了一个名为 accessControl 的过滤器。过滤器方法必须为如下 结构: public function filterAccessControl($filterChain) / 调用 $filterChain-run() 以继续后续过滤器与动作的执行。 $filterChain (过滤器链)是一个 CFilterChain 的实例,代表与所请求动作相关的过滤器列表。 在过滤器方法中,我们可以调用 $filterChain-run() 以继续执行后续过滤器和动作。 如 动作 一样,过滤器也可以是一个对象,它是 CFilter 或其子类的实例。如下代码定义 了一个新的过滤器类: class PerformanceFilter extends CFilter protected function preFilter($filterChain)/ 动作被执行之前应用的逻辑return true; / 如果动作不应被执行,此处返回 false

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号