Yii入门指导(四):强大的“小物件”

1,修改默认的控制器

Yii的默认应用:

所有的配置都可以在main.php中进行配置,那么修改默认的控制器就是在main.php中增加如下代码:

‘defaultController‘ => ‘‘, //修改默认控制器

Yii模块:admin模块为例

每个Yii的模块,都会在protected/modules目录下具有单独的文件夹,例如:admin,然后在对应的模块文件夹下存在对应的模块文件,如:AdminModule.php

那么对于模块的修改它的模块控制器则需要在AdminModule.php中进行如下定义:

$this->defaultController = ‘index‘;//修改模块的默认控制器

2,模块的配置文件

Yii的核心思想是尽可能去重复利用现有代码

对于模块中的配置文件,如果你没有指定,那么Yii会找到整个Yii系统共用的配置文件也就是main.php

但是大部分情况下模块中的配置项和整个应用的配置项多少会有一点区别,那么这个时候就需要在模块中去单独的配置这个区别项,所以Yii也想到了这个需求并且也允许你这么做

AdminModule.php中的代码结构如下图:

其中的“init”方法是在模块执行初始化的时候执行的,那么我们对模块的配置项也是在这里进行的

想单独的设置模块的配置文件,则需要在“init”方法中做如下的设置:

这个时候,可能大家发现,我们是通过Yii中的全局对象来改变Yii中的行为的,当然也可以使用它来获取Yii中的相关配置项,不是吗!

3,Yii中的“小物件”

Yii中的View层,采用的模板是原生的PHP代码和HTML混排的方式,这种方式使得View层少去了“解析”的步骤,使得系统的速度有所增加,但是也增加View层代码的编写难度,不过这种难度是相对而言的,通常情况下所有的程序员都能够接受这种方式。

Yii在View层采用这种方式,使得Yii在View层的功能比其它的框架更加强大,其中突出的特点就是它的“小物件”

使用Yii的“小物件”可以在视图层方便的创建直接和数据模型关联的表单,也可以方便的创建我们常用的验证码而无需传值,也可以方便的实现数据分页,当然也可以方便的供我们自定义小物件来实现其它的功能。

4,“小物件”之表单初探

想要使用Yii的表单,则首先需要自顶一个一个模型,那在Yii中关于模型有两类,一种是数据不需要保存,用完之后可以直接丢弃的叫:表单模型---CFormModel

另外一种模型则是需要对收集到的数据进行数据库插入的,数据是不会被丢弃的叫:CActiveRecord

那这里我们先是简单的认识表单,并不需要数据,则我们直接建立表单模型即可,

在protected/modules/admin/models文件夹下新建:Article.php,其中代码如下:

然后在控制器中需要将我们的数据模型传递到视图中以便视图可以使用“小物件”来创建表单,控制器代码如下:

此时,我们便可以在视图中来使用小物件创建表单了:

首先,我们使用“小物件”必须要调用“beginWidget”方法,然后指定创建小物件的类,然后根据需要确定是否需要调用“endWidget”方法,例如表单有开始标签还有结束标签则需要调用,但是对于创建验证码img标签则不需要调用

然后我们调用“小物件”的实例“$form”来调用“CActiveForm”类中的方法来创建相应的表单,这里我们以创建一个“文本输入框”为例,其它表单的创建方式一样,需要去查看“CActiveForm”类中相应的方法,直接使用即可。

那么使用“CActiveForm”类中的方法类创建表单时,调用的方法需要传递“三个参数”

第一个参数:“数据模型对象”,也就是我们从控制器中传递过来的数据模型的实例

第二个参数:“表单name属性值”,这里的值必须要和数据库中的字段值一致,如果数据库中没有该值,则需要在数据模型中声明,方法如下图:在Article模型中

那么最终,生成的表单的样式如下:

网页源代码如下:

下一节继续:Yii会员注册功能实现(CActiveRecord类型表单创建、Yii数据库操作)

时间: 2024-08-10 19:06:24

Yii入门指导(四):强大的“小物件”的相关文章

Yii入门指导(五):实战之“会员注册”

事情纠结多了反而不好..... 1,会员数据库表结构如下: 2,建立会员模型,位于:protected/modules/admin/models 目录下  <?php /**  * 用户表的模型  * @author koma  *  */ class User extends CActiveRecord { //声明非数据库字段 public $password2; public static function model($className = __CLASS__) { return pa

Yii入门指导(三):Yii“模块”窥探

1,Yii模块简介 Yii中的模块,可以把它看做成一个单独的应用,它具有独立的控制器.模型.视图以及组件等. 通常情况下,我们使用Yii做WEB项目开发,那么"默认的Yii应用"我们可以作为WEB的前台,当需要有一个后台的时候, 这个情况下就需要新建立一个"模块",然后让这个新建立的模块充当"后台"的角色. 想必这种比喻最能够说明Yii中模块的含义了...... 现在我们的项目结构如下图: 那么当我们在浏览器中访问:http://localhos

Yii 通过widget小物件生成添加表单

通过widget小物件创建添加商品的表单 视图里,表单以endWidget();?>结束 最终效果: 把表单提交过来的信息保存到数据库中去. 补充要点: 密码表单: <?php echo $form->passwordField(模型对象,’字段’); 单选表单: <?php echo $form->radioButtonList($user_model,'user_sex',$sex,array('separator'=>'&nbsp','labelOptio

YII用户注册和用户登录(二)之登录和注册在视图通过表单使用YII小物件并分析

登录和注册在视图通过表单使用YII小物件并分析 [php] view plain copy print? <?php $form = $this -> beginWidget('CActiveForm', array( 'enableClientValidation'=>true, 'clientOptions'=>array( 'validateOnSubmit'=>true, ), ) ); ?> <?php $this->endWidget(); ?&

React-Native入门指导之iOS篇 —— 一、准备工作

React-Native 入门指导系列教程目录 一.准备工作 (已完成) 二.项目介绍与调试 三.CSS样式与Flex布局 四.常用UI控件的使用 五.JSX在React-Native中的应用 六.事件与数据调用 七.自定义组件 八.动手写实例 九.发布与真机调试 写在前面 1. 什么是React-Native? React-Native是:Facebook 在2015年初React.js技术研讨大会上公布的一个开源项目.支持用开源的JavaScript库React.js来开发iOS和Andro

(转) Lua: 给 Redis 用户的入门指导

可能你已经听说过Redis 中嵌入了脚本语言,但是你还没有亲自去尝试吧?  这个入门教程会让你学会在你的Redis 服务器上使用强大的lua语言. Hello, Lua! 我们的第一个Redis Lua 脚本仅仅返回一个字符串,而不会去与redis 以任何有意义的方式交互. 1 local msg = "Hello, world!" view source print? 1 local link_id = redis.call("INCR", KEY[1]) 2 r

[安卓开发]App Widget开发入门指导

本节所要讲的主要内容包括Android桌面小部件.App Widget的开发入门指导,并通过一个简单实例的形式来直观的讲解App Widget. 一.Widget .App Widget .Web App 的概念 Widget最初的概念是98年一个叫Rose的苹果工程师提出,直到2003年的时候才正式为大家所知,不过随后无数大公司都开始接受并应用这一思路.现在我们看到在苹果系统里按下F4弹出的Dashboard里的小工具叫Widget,在Windows 7里侧边栏上的那些漂亮的小工具叫Gadge

区块链快速入门(四)——BFT(拜占庭容错)共识算法

区块链快速入门(四)--BFT(拜占庭容错)共识算法 一.BFT简介 1.拜占庭将军问题简介 拜占庭将军问题(Byzantine Generals Problem)是Leslie Lamport(2013年的图灵奖得主)用来为描述分布式系统一致性问题(Distributed Consensus)在论文中抽象出来一个著名的例子.拜占庭将军问题简易的非正式描述如下:拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人.这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击

初识mac,写给mac新手的入门指南(四)Mac小白装机必备

花了好几天的时间翻了各种帖子,发现大多都是各种高大上,不太适合新手,所以打算自己写篇,尽量详细一点,希望对大家有用.此次推荐都是适合mac新手,适合大多数人平时会使用的apps,欢迎补充! https://www.macdown.com 此次推荐的有以下app: 网易云音乐 小编也是网易云忠实粉,多少个辗转反侧又无眠的夜都是和网易云音乐的各类评论一起度过,人家都说在网易云听歌,听的是故事!! IINA(视频播放器) 这款app应用商店没有,但是看很多人推荐所以小编也下下来用了,是免费哒.目看来还