Yii的场景】的更多相关文章

先上代码 class User extends CActiveRecord{    public function rules()    {        return array(            array('username, email', 'required'),            array('password, confirm_password', 'required', 'on'=>'create'),            array('username', 'uni…
定义场景可以限制对字段的增删改查操作…
1.在 model 里面定义一下场景 类名必须是 scenarios() public function scenarios() { return [ 'create' => ['title', 'image', 'content'], 'update' => ['title', 'content'], ]; } 2.下面我们设置 rules() ,调用场景我们用 on 关键字 [['title', 'content'], 'required', 'on' => ['create', '…
YII在模型中定义场景后 public function scenarios(){//场景 return [ 'sco1'=>['aid','uphone'], 'sco2'=>['aid','uphone','status'], ]; } 在控制器中调用场景时,场景定义之外的字段会在操作时被过滤掉 public function actionSenorio(){ $test = new Code(); $test->scenario = "sco1"; $testD…
给个意见或建议吧 扩展一个Model基类 <?php class BaseModel extends Model{ use ValidationRules; public function rules(){} } /** * 验证参数规则 */ trait ValidationRules{ public $_data; public $errors = []; // 验证产生的错误 public $scene = 'default'; // 场景 ['update','create'] priv…
控制器: public function actionTests1(){ $c = new \app\components\cat(); $m = new \app\components\mou; $g = new \app\components\dog; Event::on(\app\components\cat::className(),'miao',[$m,'run']); // Event::on(cat::className(),'miao',function(){echo 11;})…
摘自Yii官网:http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.ar 在官网原文的基础上添加了CDbCriteria的详细用法. 虽然 Yii DAO 可以处理几乎任何数据库相关的任务, 但很可能我们会花费 90% 的时间以编写一些执行普通 CRUD(create, read, update 和 delete)操作的 SQL 语句. 而且我们的代码中混杂了SQL语句时也会变得难以维护.要解决这些问题,我们可以使用 Active R…
摘自Yii官网:http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.dao Yii提供了强大的数据库编程支持.Yii数据访问对象(DAO)建立在PHP的数据对象(PDO)extension上,使得在一个单一的统一的接口可以访问不同的数据库管理系统(DBMS).使用Yii的DAO开发的应用程序可以很容易地切换使用不同的数据库管理系统,而不需要修改数据访问代码. 数据访问对象(DAO) 对访问存储在不同数据库管理系统(DBMS)中的数据提…
背景: 对于一个大公司拥有多个分公司的应用场景下,我们通常需要配置多个sub-database(子数据库)来存储不同的数据纪录. 配置步骤: 1.在application骨架里面的主配置文件main.php的索引为components中新增一个'db2'=>array(//todo the code stub.); 例如: // application components 'components'=>array( 'db'=>array( 'connectionString' =>…
场景 一个模型可能在多个场景中使用,在不同的场景中,模型可能使用不同的业务逻辑和规则.例如, User 模型可能在用户登录时使用,也可能在用户注册时使用,某些属性可能在用户注册时强制要求有,在用户登录时不需要,例如email属性. 模型使用 yii\base\Model::scenario 属性保持使用场景的跟踪, 默认情况下,模型支持一个名为 default 的场景, 两种设置场景的方法: //场景作为属性来设置 $model = new User; $model -> scenario =…
前半部分为自己使用的过程,下边为转载的,具体地址见:http://blog.sina.com.cn/s/blog_88a65c1b0101j717.html 1.在model中 public function rules() { return [ [['join_verify', 'create_activity', 'is_open_group', 'is_open_child_com','sendmail_limit','sendmail_from_name','sendmail_from'…
Model类,集中整个应用的数据和业务逻辑—— /** * Generates a user friendly attribute label based on the give attribute name. * 生成一个对用户友好的属性标签,将属性名中的下划线.破折号.点替换为空格,并且每个单词的首字母大写 * This is done by replacing underscores, dashes and dots with blanks and * changing the first…
Model类,集中整个应用的数据和业务逻辑——验证 /** * Returns the attribute labels. * 返回属性的标签 * * Attribute labels are mainly used for display purpose. For example, given an attribute * `firstName`, we can declare a label `First Name` which is more user-friendly and can *…
Model类,集中整个应用的数据和业务逻辑——场景.属性和标签: /** * Returns a list of scenarios and the corresponding active attributes. * An active attribute is one that is subject to validation in the current scenario. * 返回所有场景及与之对应的 active 属性的列表 * active 属性是指在默认场景中验证的 * The r…
Model类,集中整个应用的数据和业务逻辑: namespace yii\base; use Yii; use ArrayAccess; use ArrayObject; use ArrayIterator; use ReflectionClass; use IteratorAggregate; use yii\helpers\Inflector; use yii\validators\RequiredValidator; use yii\validators\Validator; /** *…
我之前在朋友的公司拿到他们oa的代码,发现是用Yii写的,oa系统比较简单,但是程序员对Yii的运用比较好,我拿来学习一下.如果有需要,我可以私下分享这个程序,因为是人家的功劳,不在网上公布代码了,只作为学习参考用. 今天遇到的问题是Yii验证规则的适用场景问题,Yii的验证规则如果加上on表示这些验证规则只能在这个场景里面适用,例如: array('realname,telephone,company', 'required', 'on'=>'userinfo'), 很容易理解.但是这个on怎…
YII的models中的rules部分是一些表单的验证规则,对于表单验证十分有用,在相应的视图(views)里面添加了表单,在表单被提交之前程序都会自动先来这里面的规则里验证,只有通过对其有效的限制规则后才能被提交,可以很有效地保证表单安全和信息的有效性.还是给大家具体说明一下: 以下是视图(views)部分的简单代码: <?php $form=$this->beginWidget('CActiveForm', array( 'id'=>'tag-form', 'enableAjaxVa…
在项目开发的过程中有时候会涉及到对外提供接口供第三方程序调用或者是不同程序间需要相互通信,那么最通用的做法是用传统的SOAP方式来实现,用XML的文档格式来作为传输载体.但是这种方式不灵活,支持的数据结构类型单一,例如(不能返回json格式的数据),同时在javascript中处理冗长的SOAP依然很困难,对于浏览器有压力,也就是说当XML的内容过多时可能会存在性能问题.如果在项目中有以上需求,不妨考虑使用第三方开发的远程调用框架phprpc:http://www.phprpc.org/zh_C…
Yii 权威指南 http://www.yiichina.com/guide/ http://www.yiiframework.com/doc/guide/1.1/zh_cn/ Ⅰ.基本概念一.入口文件入口文件内容:一般格式如下: $yii=dirname(__FILE__).'/../../framework/yii.php';//Yii框架位置$config=dirname(__FILE__).'/protected/config/main.php';//当前应用程序的主配置文件位置 //…
Ⅰ.基本概念一.入口文件入口文件内容:一般格式如下:<?php$yii=dirname(__FILE__).'/../../framework/yii.php';//Yii框架位置$config=dirname(__FILE__).'/protected/config/main.php';//当前应用程序的主配置文件位置// 部署正式环境时,去掉下面这行// defined('YII_DEBUG') or define('YII_DEBUG',true);//是否运行在调试模式下require_…
Yii1.1: $_GET 可以表示为 Yii::app()->request->getQuery() $_POST 可以表示为 Yii::app()->request->post(); 控制器: 路由: 控制器 ID 是一种 'path/to/xyz' 的格式,对应相应的控制器类文件protected/controllers/path/to/XyzController.php, 其中的标志 xyz 应被替换为实际的名字 (例如 post 对应protected/controlle…
1. 连接到数据库 大多数 Web 应用由数据库驱动,我们的测试应用也不例外.要使用数据库,我们首先需要告诉应用如何连接它.修改应用的配置文件 WebRoot/testdrive/protected/config/main.php 即可,如下所示: return array( ...... 'components'=>array( ...... 'db'=>array( 'connectionString'=>'sqlite:protected/data/source.db', ), )…
前言 虽然本文是基于YII1.1,但其中提到的安全措施适用于多数web项目安全场景,所以翻译此文,跟大家交流.原文地址. 目录 安全基本措施... 2 验证与过滤用户的输入信息... 2 原理... 2 客户端验证... 2 YII如何防范... 2 跨站脚本攻击XSS. 4 原理... 4 YII如何防范... 5 SQL注入... 7 原理... 7 YII如何防范... 8 跨站请求伪造CSRF. 12 配置WEB服务器... 12 PHP项目一些有用的指令... 15 授权... 16…
与<YII框架>不得不说的故事—基础篇 第1章 课程目标 1-1 课程目标 (00:54) 第2章 课前知识准备 2-1 YII的启动和安装 (05:12) 2-2 YII请求处理流程 (02:44) 2-3 命名空间 (10:46) 第3章 控制器 3-1 控制器的创建 (03:22) 3-2 控制器之请求处理 (05:58) 3-3 控制器之响应处理 (09:09) 3-4 控制器之session处理 (09:25) 3-5 控制器之cookie处理 (09:11) 第4章 视图 4-1…
在使用Yii时遇到这样的需求:在一个注册的页面输入两次密码,并验证两次输入是否一致.可是password的repeat的字段在数据库 并不存在.问题来了,如何创建一个password_repeat的属性,进行密码验证.最偷懒的方法就是利用yii自带的验证器.在这里记录下实现的方 法. 假设项目结构如下 protected/models/User.php proteced/controllers/SiteController.php protected/views/site/forgot.php…
YII缓存依赖的应用 缓存 缓存依赖 Yii 缓存是提升Web应用性能的简便有效的方式.当我们在加载网页需要过多的时间,比如说查询时间过久,抑或是调用接口占用过多I/O,建立缓存是一个行之有效的方法,它可以避免多次加载页面缓慢的不良用户体验.但是网页中数据并不是一成不变的,它是变化的,就如查询有不同条件不同内容,所以我们缓存的内容也要随之变化,这就是缓存依赖所存在的必要性. 设置缓存 一般情况下,我们会给缓存的变量设置过期时间,到了过期时间,该变量也就随之有效,下次加载就必须重新生成缓存,这就是…
熟悉Yii框架的人都知道,灵活的使用场景可以达到事半功倍的效果! 比如普通的数据的新增.修改,新增需要验证其中两个字段,而修改只需要验证其中一个字段:还有种情况,也是我们现在用到的,同一张表(同一个model)有可能在不同的项目分支中使用,但是不用的项目分支对成员变量的验证是不一样的,这时使用场景就可以轻松搞定: 1.Yii2中简单的场景使用在这里有说明: http://www.yiichina.com/tutorial/605 2.但是对于初学者可能还是不能灵活的应用: public func…
应用场景 把代码转移到线上服务器时,GII.BUG工具不正常使用,但在本地服务器是正常的. 分析原因 Yii框架在使用GII 和BUG 时,会针对访问IP地址拦截,没有在配置中设置的IP地址是会默认被拦截掉. 解决方案 在common/config/main.php 配置一下参数,访问IP地址,可以百度搜索IP 这样可以看到自己当前的IP地址,这个IP地址是网络运营商自动分配的,与网络运营商断连接后有可能更变. 更改或添加如下 return[ 'modules'=>[ 'gii' => [ '…
/** * Validates the specified object. * @param \yii\base\Model $model the data model being validated * @param array|null $attributes the list of attributes to be validated. * Note that if an attribute is not associated with the validator - it will be…
项目地址:https://gitee.com/templi/yiicms 感谢七觞酒大神的付出,和免费分享.当然也感谢yii2的开发团队们. 项目已经安全完毕,不知道后台密码,这种背景下,后台无法进去.绕不开的话题就是: 1.后台密码账号如何产生.类似下图: 加密过的字符串自然不能用于登陆. 我尝试通过前台注册一个账户,然后登陆,因为权限不够,尽管等登陆到后台首页,同样无权访问其他任何页面.配置了下modules, 意图通过给予权限系统权限,然后更改刚加入的用户“zhuangli”以管理员角色以…