php的yii框架开发总结6
MVC中的Controller部分,所有的controller类都是继承自Controller基类,基类里面包含actionAdmin-管理员,actionIndex-一般默认显示,actionView-查看某些信息,actionDelete-删除数据,actionUpdate-修改信息,actionCreate-创建基于model某条信息,当然我们还可以自己构建我们需要的方法,并配合自己写的View以得到其它功能页面。下面我们来详细介绍Controller里面的方法、属性。
public $layout='//layouts/column2';//这是CController基类里的一个属性,是布局用的,会在view文件中用到;
下面这个方法是对该页面下的各个功能的权限设置:
public function accessRules()
{
return array(
array('allow', // allow all users to perform 'index' and 'view' actions
'actions'=>array('index'),
'users'=>array('*'),
),
array('allow', // allow authenticated user to perform 'create' and 'update' actions
'actions'=>array('view','create','update','show'),
'users'=>array('@'),
),
array('allow', // allow admin user to perform 'admin' and 'delete' actions
'actions'=>array('admin','delete','open'),
'users'=>array('admin'),
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
*代表全部,也就是所有用户都能看到index页面,包括游客guest;@代表注册用户,也包括admin,他能看到view、create、update、show还有前面都有的index页面,admin就是管理员,他除了能享受上面的服务之外还能有权看admin、delete、open下的页面,其他的功能deny所有用户。
public function actionView()
{
$this->render('view',array(
'model'=>$this->loadTodayModel(),
));
}
public function loadTodayModel()
{
$model=Dailyreport::model()->findBySql("select *from tbl_dailyreport where author_id=:id and datediff(create_time,curdate())=0",array(':id'=>Yii::app()->user->id));
if($model===null)
throw new CHttpException(404,'The requested page does not exist.');
return $model;
}
这是查看当前用户今天所发日报的操作,loadTodayModel()方法中我怕们用了findBySql()方法,该方法返回满足条件的单条记录,其中datediff(create_time,curdate())=0是判断“日期是否是今天”的方法,得到model后render到view视图,我们看一下view视图怎么定义的:
<?php
/* @var $this DailyreportController */
/* @var $model Dailyreport */ $this->breadcrumbs=array(
'日报列表'=>array('index'),
$model->id,
); $this->menu=array(
array('label'=>'日报列表', 'url'=>array('index')),
array('label'=>'发日报', 'url'=>array('create')),
array('label'=>'修改日报', 'url'=>array('update', 'id'=>$model->id)),
);
?> <h1>查看日报</h1> <?php $this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
'id',
array(
'label'=>'内容',
'value'=>$model->content,
),
array(
'label'=>'发布时间',
'value'=>$model->create_time,
),
array(
'label'=>'作者',
'value'=>Yii::app()->user->name,
),
),
)); ?>
breadcrumbs是网页面包屑,$model就是从Controller传过来的model值,menu就是页面是一些链接,可以指到其它view,有些需要参数,比如上面的update,
参数是赋值给actionUpdate()方法的。下面用到了一个widget组件CDetailView:'data'是它的属性值,含义:the data model whose details are to be displayed.
也可以是其它值,参见API。attributes格式:
array(
'name'=>'create_time',//name是必须有的,对应model中的字段,下面三个属性并不是必须的
'type'=>'date',//显示数据的格式,有很多种raw, text, ntext, html, date, time, datetime, boolean, number, email, image, url.
'label'=>'发布时间',//在页面上显示的header,也就是标题
'value'=>$model->create_time,//显示的数值
),
另外:username
和id
属性都将存储在用户 SESSION 中,可在代码的任何部分通过Yii::app()->user
访问。Yii::app()->user->name,Yii::app()->user->id即可
得到当前登录用户的名字和ID,非常常用的。
其它的方法同理,但也有所不同。
php的yii框架开发总结6的更多相关文章
- YII框架开发一个项目的通用目录结构
YII框架开发一个项目的通用目录结构: 3 testdrive/ 4 index.php Web 应用入口脚本文件 5 assets/ 包含公开的资源文件 6 css/ 包含 CSS 文件 7 ima ...
- PHP Yii框架开发——组织架构网站重构
最近一段时间在维护公司的组织架构网站(Org),旧版网站只是用了xampp简单搭建了一套环境部署在了windows机器上,代码结构相对简单. 整个架构如下: 整个架构没有用到复杂的结构,class里放 ...
- php的yii框架开发总结1
最近用php的yii框架写了一个小的demo,虽然不复杂,但是也学习了很多东西,现在总结一下. 项目需求:为几个教研室写一个日报系统,每个人每天写日报,并且系统有自动实现发邮件功能. 额外要求:1.人 ...
- php的yii框架开发总结2
开发流程:1.用yii创建网站目录,当时用命令行创建时遇到了问题,试了很久才找到原因:我的原因是在yii/framework/yiic.bat这个文件中的一条语句: if "%PHP_COM ...
- php的yii框架开发总结9
这一篇讲解怎么实现的自动发邮件的功能,我在网上查了很多资料,很多都是用定时检测来实现的,我试过,效率太低,网站也卡了. 后来就写了一个.bat文件来实现刷新页面,用了windows的定时任务定时来运行 ...
- php的yii框架开发总结10
1.CActiveForm是Chtml类的封装,但是它有数据验证的功能,有三种方式:服务器端.客户端.Ajax数据验证. 服务器端验证:当整个表单页面被提交后,在服务器端 进行验证.如果存在任何验证错 ...
- php的yii框架开发总结8
EMailer是一个简单的封装PHPMailer类.利用这个扩展可以实现发邮件的功能. 下载地址:http://www.yiiframework.com/extension/mailer/ 下载解压把 ...
- php的yii框架开发总结7
protected\config\main.php是整个网站中很重要的一个文件,引用文件,连接数据库,默认页面等都是在这里设置: 'import'=>array( 'application.mo ...
- php的yii框架开发总结5
MVC架构之model类: 我的日报系统用到的数据表:tbl_dailyreport表 其中anthor_id是外键,对应tbl_user数据表的主键id,下面是tbl_user表 class Dai ...
随机推荐
- [JavaScript]Prototype继承
JavaScript相对于其他的编程语言是比较简单的,只要吃透了Prototype和Closure(闭包),基本上就可以说精通JavaScript了. JavaScript里如何实现向Java语言的O ...
- Unity 动画系统 StateMachineBehaviour 动画状态机
- ubuntu 16 64位编译安装php
./configure \ --prefix=/usr/local/php7 \ --exec-prefix=/usr/local/php7 \ --with-config-file-path=/us ...
- P5021 赛道修建 (NOIP2018)
传送门 考场上把暴力都打满了,结果文件输入输出写错了.... 当时时间很充裕,如果认真想想正解是可以想出来的.. 问你 长度最小的赛道长度的最大值 显然二分答案 考虑如何判断是否可行 显然对于一个节点 ...
- 互联网开发-web文件上传性能问题
1. 问题描述 文件大小 部署环境 平均上传速度 5M 外网 28s-36s 5M 公司局域内网 秒传,很快 2. 问题分析 在网上搜索“测速网”测试了一下公司外网的带宽情况: 上传带宽 = 1.04 ...
- jdk collections map类图
- ubuntu14.04下 安装matlabR2015b遇到的一些问题及其解决方法
问题1:错误提示关于未取得权限,不能再/crack/bin文件中复制文件到安装matlab的/usr/bin文件中? 采取解决方法: 再终端里输入 sudo nautilus,在弹出文件夹里即可进行相 ...
- java——链表映射 LinkedListMap
好像也不是基于链表来实现的,而是采用与链表类似的节点形式重新定义了一个节点内部类,以此来实现映射 public class LinkedListMap<K, V> implements M ...
- edis Cluster实现原理
一.Redis Cluster主要特性和设计 集群目标 1)高性能和线性扩展,最大可以支撑到1000个节点:Cluster架构中无Proxy层,Master与slave之间使用异步replic ...
- SourceInsight,Understand,SecureCRT设置
SourceInsight 设置字体 Option/Document Option/Screen Fonts Understand https://scitools.com/download/ ...