一、属性标签与规则设置

当进入网站页面,将会读数据库返回信息到视图上。那么,现在定义模型中的属性在视图标签上的显示,

也就是模型属性到前台标签的映射

// 定义模型属性到前台标签的映射
public function attributeLabels(){
  return array(
     // '表字段' => '<label>标签里面的内容'
    'username' => '用户名'
  );
}

这将为 username 属性生成一个 <label>用户名</label> 的提示标签。

表单验证规则:

同样,与登录时验证规则都在模型的 rules() 方法里定义

public function rules(){
  return array(  
    array('uname', 'required', 'message' => '用户名不能为空'),
    array('pwd', 'required', 'message' => '密码不能为空'),
    array('pwd', 'authenticate'), // 自定义 authenticate验证规则
    array('pwded', 'compare', 'compareAttribute' => 'pwd', 'message' => '两次密码不一致'),
    array('captcha', 'required', 'message' => '验证码不能为空'),
    array('captcha', 'captcha', 'message' => '验证码有误')
  );
}

更多规则,参考 http://blog.csdn.net/zm2714/article/details/8683329

二、启用客户端验证

首先,控制器中渲染视图用$this->render('视图名');方法

然后,视图上

<?php
  $form = $this->beginWidget('CActiveForm', array(
    'id' = 'post-form',
    'enableClientValidation' => true, //启用客户端验证
    'clientOptions' => array(
      'validateOnSubmit' => true, //表单提交时验证
    )
  ));
?>

三、操作成功提示

在控制器方法中,

Yii::app()->user->setFlash('success', 'XX操作成功');  // success是标识符

在视图中,

if(Yii::app()->user->hasFlash('success')){
  echo Yii::app()->user->getFlash('success');
}

四、激活调试模式

在main.php里面,取消下面被注释的部分

'log' => array(
  'class'=>'CLogRouter',
  'routes'=>array(
    array(
      'class'=>'CFileLogRoute',
      'levels'=>'error, warning',
    ),     /*
    array(
      'class'=>'CWebLogRoute',     */
  ),
),

五、AR类增删改查

1、只有“增”的时候,需要new模型,其他时候直接静态调用。

$model = new Model();
$model->attributes = $_POST['form'];
$model->save();

save()方法在new Model的时候是增加,在$model::model()的时候是修改

2、查记录:

单条查询:

find('username = :name', array(':name' => 'admin'));  //单条查询特定username为admin的记录
findByPk(1); // 单条查询主键为1的记录
findBySql('select id, username, logintime, loginip, from {{admin}}'); //单条SQL查询

多条查询:

findAll();

findAllByPk();

findAllBySql();

3、改记录

和增记录同样操作,$model::model()->attributes = $_POST['form']->save();

4、删记录

$model::model()->deleteByPk(1); //删除主键为1的数据

更多AR类的方法参考 framework/db/ar/CActiveRecord.php 源码

六、上传类的使用

$model = new model();
$model->thumb = CUploadedFile::getInstance($model, 'thumg');
if($model->thumb){
  $name = time() . mt(0, 999) .$model-thumb->extensionName(); //保存文件名
  $model->thumb->saveAs('上传路径', $name);
}

七、扩展第三方类库

1、在protected/extensions中建立thumb/thumb.php;

2、在main.php中配置

'components' => array(
  'thumb' => array(
    'class' => 'ext.thumb.thumb'
  )
),

3、在控制器方法中调用

$thumb = Yii::app()->thumb;

ext 是扩展目录 protected/extensions/

Yii 1.1.17 四、属性标签、AR类增删改查、使用上传类与扩展第三方类库的更多相关文章

  1. GZFramwork数据库层《四》单据主从表增删改查

    同GZFramwork数据库层<三>普通主从表增删改查 不同之处在于:实例 修改为: 直接上效果: 本系列项目源码下载地址:https://github.com/GarsonZhang/G ...

  2. get,post,put,delete四种基础方法对应增删改查

    PUT,DELETE,POST,GET四种基础方法对应增删改查 1.GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改.增加数 ...

  3. node.js入门学习(四)--Demo图书的增删改查

    需求:图书的增删改查,图书数据保存在data.json文件中. 1.Demo结构: 2.首先下载安装node.js,配置环境变量:参考博客 3.项目初始化 1)创建项目根目录node-hello,进入 ...

  4. ASP.NET Core MVC 打造一个简单的图书馆管理系统 (修正版)(四)图书信息的增删改查

    前言: 本系列文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作. 本系列文章主要参考资料: 微软文档:https://docs.microsoft.com/zh-cn/asp ...

  5. yii笔一----基础,安装,结构,增删改查基本操作

    从yii中文站开始http://www.yiichina.com/ Yii 是一个高性能,基于组件的 PHP 框架 一. 1.安装yii方式 composer安装或者下载一份应用程序模板.刚开始学习, ...

  6. (四)JPA - JQPL 实现增删改查

    (一)JPA的快速入门 建议在需要使用时,看看之前的文章,先把环境搭起来. 5.JPQL JPQL和SQL 1.JPQL和SQL很像,查询关键字都是一样的 2.唯一的区别是:JPQL是面向对象的 JP ...

  7. 最简单的基于JSP标准标签库的增删改查

    创建数据库中的表:CREATE TABLE `websites` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` char(20) NOT NULL DE ...

  8. Yii数据库操作增删改查-[增加\查询\更新\删除 AR模式]

    在Yii的开发中常常需要去使用Yii的增删改查方法,这些方法又可以多次变化和组合,带来全方位的实现对数据库的处理,下面对这些方法做一些简单的整理和梳理,有遗漏或是BUG,敬请指出.灰常感谢!!! 一. ...

  9. [译]聊聊C#中的泛型的使用(新手勿入) Seaching TreeVIew WPF 可编辑树Ztree的使用(包括对后台数据库的增删改查) 字段和属性的区别 C# 遍历Dictionary并修改其中的Value 学习笔记——异步 程序员常说的「哈希表」是个什么鬼?

    [译]聊聊C#中的泛型的使用(新手勿入)   写在前面 今天忙里偷闲在浏览外文的时候看到一篇讲C#中泛型的使用的文章,因此加上本人的理解以及四级没过的英语水平斗胆给大伙进行了翻译,当然在翻译的过程中发 ...

随机推荐

  1. codeforces 981 C.Useful Decomposition

    C. Useful Decomposition time limit per test 1 second memory limit per test 256 megabytes input stand ...

  2. BZOJ 1816 扑克牌(二分)

    由于答案具有单调性,考虑二分答案并验证. 如果能凑齐x堆,因为每个joke在一个牌堆里最多只能用一次,则至多只能用min(x,m)个joke. 对于每个牌,如果这个牌的总数小于x,用joke补齐剩下的 ...

  3. 【bzoj4736/uoj#274】[清华集训2016]温暖会指引我们前行 语文题+LCT

    题目描述 http://uoj.ac/problem/274 题解 语文题+LCT 对于这种语文题建议还是自己读题好一些... 读懂题后发现:由于温度互不相同,最大生成树上的路径必须走(不走的话温度大 ...

  4. openstack之Glance介绍

    什么是Glance glance即image service(镜像服务),是为虚拟机的创建提供镜像服务 为什么要有Glance 我们基于openstack是构建基本的Iaas平台对外提供虚机,而虚机在 ...

  5. Java的第一个程序-Hello, World !

    学了一个月的Java,现在总结一下,就算复习了. 一.安装Java环境 这个没啥好说的. 1. 官网下载JDK安装 2. 配置环境变量.注意的是:环境变量配置好以后,如果cmd中运行 java 命令没 ...

  6. 【刷题】BZOJ 3513 [MUTC2013]idiots

    Description 给定n个长度分别为a_i的木棒,问随机选择3个木棒能够拼成三角形的概率. Input 第一行T(T<=100),表示数据组数. 接下来若干行描述T组数据,每组数据第一行是 ...

  7. CF549H:Degenerate Matrix ——题解

    https://vjudge.net/problem/CodeForces-549H ———————————————————————— 题目大意:给一个矩阵,每个数可以加任意的数使得该矩阵为退化矩阵( ...

  8. ZOJ1937:Addition Chains——题解

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1937 题目大意:创造一个数列,使得它: 1.单调不递减. 2.其中一个元素 ...

  9. 分享一个JQuery弹出层插件

    JQuery插件TipsWindown 1.1 一个基于jQuery的弹出层.支持拖拽,支持内容为文字,图片,URL等!至于兼容性.在IE6下,弹出对像无法绝对固定.其他应该没啥大问题: 最新更新:( ...

  10. selenium-控制浏览器操作

    from selenium import webdriver driver = webdriver.Chrome() #打开浏览器 driver.get(urlname) #控制浏览器窗口大小 dri ...