这篇文章主要介绍了Yii框架form表单用法,实例分析了Yii中form表单的实现方法与相关技巧,非常具有实用价值,需要的朋友可以参考下
本文实例讲述了Yii框架form表单用法。分享给大家供大家参考。具体方法如下:
使用表单
在 Yii 中处理表单时,通常需要以下步骤:
1. 创建用于表现所要收集数据字段的模型类。
2. 创建一个控制器动作,响应表单提交。
3. 在视图脚本中创建与控制器动作相关的表单。
一、创建模型
在编写表单所需的 HTML 代码之前,我们应该先确定来自最终用户输入的数据的类型,以及这些数据应符合什么样的规则。模型类可用于记录这些信息。正如模型章节所定义的,模型是保存用户输入和验证这些输入的中心位置。
取决于使用用户所输入数据的方式,我们可以创建两种类型的模型。如果用户输入被收集、使用然后丢弃,我们应该创建一个表单模型; 如果用户的输入被收集后要保存到数据库,我们应使用一个Active Record。两种类型的模型共享同样的基类 CModel ,它定义了表单所需的通用接口。
1、定义模型类
例如创建为一个表单模型:
复制代码 代码如下:
class LoginForm extends CFormModel
{
public $username;
public $password;
public $rememberMe=false;
}
LoginForm 中定义了三个属性: $username, $password 和 $rememberMe。他们用于保存用户输入的用户名和密码,还有用户是否想记住他的登录的选项。由于 $rememberMe 有一个默认的值 false,相应的选项在初始化显示在登录表单中时将是未勾选状态。
我们将这些成员变量称为特性(attributes)而不是属性(properties),以区别于普通的属性(properties)。特性(attribute)是一个主要用于存储来自用户输入或数据库数据的属性(propertiy)。
2、声明验证规则
一旦用户提交了他的输入,模型被填充,我们就需要在使用前确保用户的输入是有效的。这是通过将用户的输入和一系列规则执行验证实现的。我们在 rules() 方法中指定这些验证规则,,此方法应返回一个规则配置数组。
复制代码 代码如下:
class LoginForm extends CFormModel
{
public $username;
public $password;
public $rememberMe=false;
private $_identity;
public function rules()
{
return array(
array('username, password', 'required'), //username 和 password 为必填项
array('rememberMe', 'boolean'), //rememberMe 应该是一个布尔值
array('password', 'authenticate'), //password 应被验证(authenticated)
);
}
public function authenticate($attribute,$params)
{
$this->_identity=new UserIdentity($this->username,$this->password);
if(!$this->_identity->authenticate())
$this->addError('password','错误的用户名或密码。');
}
}
rules() 返回的每个规则必须是以下格式:
复制代码 代码如下:
array('AttributeList', 'Validator', 'on'=>'ScenarioList', ...附加选项)
其中的参数:
AttributeList(特性列表)是需要通过此规则验证的特性列表字符串,每个特性名字由逗号分隔;
Validator(验证器) 指定要执行验证的种类;
on 参数是可选的,它指定此规则应被应用到的场景列表;
附加选项 是一个名值对数组,用于初始化相应验证器的属性值。
二、form表单更新数据时候选值问题
category表和post表是多对多,有个中间表relationships,分别记着category_id和post_id
Post.php model中 有关系
复制代码 代码如下:
'cids'=>array(self::HAS_MANY,'Relationships','post_id'),
Category.php model中有方法:
复制代码 代码如下:
static public function getAllCategory(){
return CHtml::listData(self::model()->findAll(), 'id', 'name');
}
比如现在我要更新一条数据,这条数据的栏目有两个,假设该文章id是21,是属于两个栏目,那么在relationship表中的数据就应该是
复制代码 代码如下:
id post_id category_id
1 21 1
2 21 2
其中id是流水,该文章的category是1和2. 该栏目的数据我通过建立Relationship.php的AR能够获取,
_from中表单我是这么写的:
复制代码 代码如下:
labelEx($model,'cid'); ?>
checkBoxList($model,'cid',
Category::getAllCategory(),array(
'style'=>'display:inline;',
'separator'=>"
n",
'template'=>'{input}{label}',
'labelOptions'=>array('style'=>'display:inline')));
?>
error($model,'cid'); ?>
问题是我在_form 中不知道要肿么将数据填进去?就是我在更新数据的时候,栏目应该选中才对。
对于view层数据的解耦,抛开checkBoxList,用dropDownList来说举个例子:
1=>分类1,2=>分类2,表现层(view)中可能是''=>请选择,1=>分类1,2=>分类2。通过此,你想到了什么?
关于Behavior是这样的,Behavior只是一种解决方案,稍后再说。目前你要明白的是,你如果要为Model提供一个属性(像cid[]),需要考虑哪几点?(提示:要与CActiveRecord接地气)
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

随着互联网的普及以及人们对电影的热爱,电影网站成为了一个受欢迎的网站类型。在创建一个电影网站时,一个好的框架是非常必要的。Yii框架是一个高性能的PHP框架,易于使用且具有出色的性能。在本文中,我们将探讨如何使用Yii框架创建一个电影网站。安装Yii框架在使用Yii框架之前,需要先安装框架。安装Yii框架非常简单,只需要在终端执行以下命令:composer

Yii框架是一个高性能、高扩展性、高可维护性的PHP开发框架,在开发Web应用程序时具有很高的效率和可靠性。Yii框架的主要优点在于其独特的特性和开发方法,同时还集成了许多实用的工具和功能。Yii框架的核心概念MVC模式Yii采用了MVC(Model-View-Controller)模式,是一种将应用程序分为三个独立部分的模式,即业务逻辑处理模型、用户界面呈

Yii框架是一个高性能、可扩展、安全的PHP框架。它是一个优秀的开发工具,能够让开发者快速高效地构建复杂的Web应用程序。以下是几个原因,让Yii框架比其他框架更好用。高性能Yii框架使用了一些先进的技术,例如,延迟加载(lazyloading)和自动加载机制(automaticclassloading),这使得Yii框架的性能高于许多其他框架。它还提

随着互联网的快速发展,应用程序对于处理大量并发请求和任务变得越来越重要。在这样的情况下,处理异步任务是必不可少的,因为这可以使应用程序更加高效,并更好地响应用户请求。Yii框架提供了一个方便的队列组件,使得处理异步操作更加容易和高效。在本篇文章中,我们将探讨Yii框架中队列的使用和优势。什么是队列队列是一种数据结构,用于处理数据的先进先出(FIFO)顺序。队

ViewState是ASP.NET中的一种机制,用于保护页面的隐私数据。而在Yii框架中,ViewState同样也是实现页面数据保护的重要手段。在Web开发中,随着用户界面操作的复杂度增加,前端与后端之间的数据传输也愈发频繁。但是,不可避免的会有恶意用户通过网络抓包等手段截获数据。而未加保护的数据可能含有用户隐私、订单信息、财务数据等重要资料。因此,加密传输

Yii是一款优秀的PHP框架,它提供了很多丰富的功能和组件来加快Web应用程序的开发。其中一个非常重要的特性就是可以方便地使用外部库进行扩展。Yii框架中的扩展可以帮助我们快速完成许多常见的任务,例如操作数据库、缓存数据、发送邮件、验证表单等等。但是有时候,我们需要使用一些其他的PHP类库来完成特定的任务,例如调用第三方API、处理图片、生成PDF文件等等。

Yii框架是一款快速、高效、安全的PHP开发框架,依托于丰富的工具和组件,Yii框架可以帮助开发者更轻松地构建高质量的Web应用程序。其中,ORM(对象关系映射)是Yii框架其中之一的特点。这篇文章将简单介绍Yii框架中的ORM,并说明其如何简化数据库操作。一、什么是ORMORM是指对象关系映射,它将面向对象的编程语言中的对象与关系型数据库中的表进行映射,使

在现今互联网时代,数据的处理和展示对于各种应用而言都是至关重要的。对于一些数据量较大的网站,其展示效果直接影响用户体验,而优秀的分页机制可以使得数据展示更加清晰,提高用户的使用体验。在本文中,我们将介绍Yii框架中的分页机制,并探讨如何通过优化分页机制来改进数据展示效果。Yii框架是一种基于PHP语言的高性能、适用于Web应用的开发框架。它提供


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)