版本更新
当使用 render() 时,布局被隐式应用.视图脚本 protected/views/layouts/main.php 是默认的布局文件.这可以通过改变 CWebApplication::layout 或者 CWebApplication::layout 进行自定义。要渲染一个不带布局的视图,则需调用 renderPartial() 。
这是与AR对应的另外一套查询系统,与AR的效率比较如何呢?
1.可以通过设置应用配置中的CUrlManager::caseSensitive 为 false 使路由对大小写不敏感。2.动作可以被定义为一个以 action 单词作为前缀命名的方法。而更高级的方式是定义一个动作类并让控制器在收到请求时将其实例化。 这使得动作可以被复用,提高了可复用度。class UpdateAction extends CAction{ public function run() { // place the action logic here }}class PostController extends CController{ public function actions() { return array( 'edit'=>'application.controllers.post.UpdateAction', ); }}
CController -- 控制器用户请求时由应用(Application)创建action -- 动作默认为actionIndex路由 控制器与动作一起形成路由,如:post/edit控制器类文件的目录名小写动作的键(ID)要小写应用中可以包含模块(Module),如包含模块,路由格式为:module
CWebApplication --应用(前端控制器)应用通过数组来配置,默认为main.php,即主配置文件。配置文件返回数组:return array();component --组件YII使用组件实现应用个各种底层功能,如:CUrlManager和CHttpRequest帮助解析来自用户的请求。配置文件如果要事先载入组件需要配置在preload属性中,否则按需加载组件。访问组件使用Yii:app()->ComponentID来访问。YII核心组件详见文档Controller--前段控制器
CModel -- 模型YII有两种模型:表单模型和Active Record
1,定义模型类2,声明验证规则array('AttributeList', 'Validator', 'on'=>'ScenarioList', ...附加选项) 3,安全的特性赋值 $model->attributes=$_POST['LoginForm'];
开发规范:URL代码配置文件目录数据库
控制器:过滤器是一段代码,可被配置在控制器动作执行之前或之后执行。一个动作可以有多个过滤器。过滤器可以定义为一个控制器类的方法。方法名必须以 filter 开头。在过滤器方法中, 我们可以调用 $filterChain->run() 以继续执行后续过滤器和动作。
Yii 识别如下格式的 URL:http://hostname/index.php?r=ControllerID/ActionID对私有类成员变量来说,我们推荐以下划线作为其名字前缀控制器名字的特殊规则是它们必须以单词 Controller 结尾
组件事件以 on 开头的命名方式定义。要使用一个行为,它必须首先通过调用此行为的 attach() 方法绑定到一个组件。然后我们就可以通过组件调用此行为方法:
在视图脚本内部,我们可以通过 $this 来访问控制器实例.我们可以在视图里以 $this->propertyName 的方式 拉取 控制器的任何属性.
表单模型用于保持从用户的输入获取的数据。Active Record (AR) 是一种用于通过面向对象的风格抽象化数据库访问的设计模式。
CUrlManager::caseSensitive 为 false 使路由对大小写不敏感。 $filterChain (过滤器链)是一个 CFilterChain 的实例,代表与所请求动作相关的过滤器列表。调用 $filterChain->run() 以继续执行后续过滤器和动作。 要对动作应用过滤器,我们需要覆盖 CController::filters() 方法。此方法应返回一个过滤器配置数组。
应用基础目录下的内容应该保护起来防止网站访客直接访问。由 CWebApplication 预定义的核心组件。
MVC框架每场类似于韩老师说的三层结构Model View Controllermodel负责数据库view负责用户界面controller是控制器,确保model与view的同步