MVC中的Controller部分,所有的controller类都是继承自Controller基类,基类里面包含actionAdmin-管理员,actionIndex-一般默认显示,actionView-查看某些信息,actionDelete-删除数据,actionUpdate-修改信息,actionCreate-创建基于model某条信息,当然我们还可以自己构建我们需要的方法,并配合自己写的View以得到其它功能页面。下面我们来详细介绍Controller里面的方法、属性。

public $layout='//layouts/column2';//这是CController基类里的一个属性,是布局用的,会在view文件中用到;

下面这个方法是对该页面下的各个功能的权限设置:

  1. public function accessRules()
  2. {
  3. return array(
  4. array('allow', // allow all users to perform 'index' and 'view' actions
  5. 'actions'=>array('index'),
  6. 'users'=>array('*'),
  7. ),
  8. array('allow', // allow authenticated user to perform 'create' and 'update' actions
  9. 'actions'=>array('view','create','update','show'),
  10. 'users'=>array('@'),
  11. ),
  12. array('allow', // allow admin user to perform 'admin' and 'delete' actions
  13. 'actions'=>array('admin','delete','open'),
  14. 'users'=>array('admin'),
  15. ),
  16. array('deny', // deny all users
  17. 'users'=>array('*'),
  18. ),
  19. );
  20. }

*代表全部,也就是所有用户都能看到index页面,包括游客guest;@代表注册用户,也包括admin,他能看到view、create、update、show还有前面都有的index页面,admin就是管理员,他除了能享受上面的服务之外还能有权看admin、delete、open下的页面,其他的功能deny所有用户。

  1. public function actionView()
  2. {
  3. $this->render('view',array(
  4. 'model'=>$this->loadTodayModel(),
  5. ));
  6. }
  7. public function loadTodayModel()
  8. {
  9. $model=Dailyreport::model()->findBySql("select *from tbl_dailyreport where author_id=:id and datediff(create_time,curdate())=0",array(':id'=>Yii::app()->user->id));
  10. if($model===null)
  11. throw new CHttpException(404,'The requested page does not exist.');
  12. return $model;
  13. }

这是查看当前用户今天所发日报的操作,loadTodayModel()方法中我怕们用了findBySql()方法,该方法返回满足条件的单条记录,其中datediff(create_time,curdate())=0是判断“日期是否是今天”的方法,得到model后render到view视图,我们看一下view视图怎么定义的:

  1. <?php
  2. /* @var $this DailyreportController */
  3. /* @var $model Dailyreport */
  4.  
  5. $this->breadcrumbs=array(
  6. '日报列表'=>array('index'),
  7. $model->id,
  8. );
  9.  
  10. $this->menu=array(
  11. array('label'=>'日报列表', 'url'=>array('index')),
  12. array('label'=>'发日报', 'url'=>array('create')),
  13. array('label'=>'修改日报', 'url'=>array('update', 'id'=>$model->id)),
  14. );
  15. ?>
  16.  
  17. <h1>查看日报</h1>
  18.  
  19. <?php $this->widget('zii.widgets.CDetailView', array(
  20. 'data'=>$model,
  21. 'attributes'=>array(
  22. 'id',
  23. array(
  24. 'label'=>'内容',
  25. 'value'=>$model->content,
  26. ),
  27. array(
  28. 'label'=>'发布时间',
  29. 'value'=>$model->create_time,
  30. ),
  31. array(
  32. 'label'=>'作者',
  33. 'value'=>Yii::app()->user->name,
  34. ),
  35. ),
  36. )); ?>
  1. breadcrumbs是网页面包屑,$model就是从Controller传过来的model值,menu就是页面是一些链接,可以指到其它view,有些需要参数,比如上面的update
    参数是赋值给actionUpdate()方法的。下面用到了一个widget组件CDetailView'data'是它的属性值,含义:the data model whose details are to be displayed.
    也可以是其它值,参见APIattributes格式:
    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的更多相关文章

  1. YII框架开发一个项目的通用目录结构

    YII框架开发一个项目的通用目录结构: 3 testdrive/ 4 index.php Web 应用入口脚本文件 5 assets/ 包含公开的资源文件 6 css/ 包含 CSS 文件 7 ima ...

  2. PHP Yii框架开发——组织架构网站重构

    最近一段时间在维护公司的组织架构网站(Org),旧版网站只是用了xampp简单搭建了一套环境部署在了windows机器上,代码结构相对简单. 整个架构如下: 整个架构没有用到复杂的结构,class里放 ...

  3. php的yii框架开发总结1

    最近用php的yii框架写了一个小的demo,虽然不复杂,但是也学习了很多东西,现在总结一下. 项目需求:为几个教研室写一个日报系统,每个人每天写日报,并且系统有自动实现发邮件功能. 额外要求:1.人 ...

  4. php的yii框架开发总结2

    开发流程:1.用yii创建网站目录,当时用命令行创建时遇到了问题,试了很久才找到原因:我的原因是在yii/framework/yiic.bat这个文件中的一条语句: if "%PHP_COM ...

  5. php的yii框架开发总结9

    这一篇讲解怎么实现的自动发邮件的功能,我在网上查了很多资料,很多都是用定时检测来实现的,我试过,效率太低,网站也卡了. 后来就写了一个.bat文件来实现刷新页面,用了windows的定时任务定时来运行 ...

  6. php的yii框架开发总结10

    1.CActiveForm是Chtml类的封装,但是它有数据验证的功能,有三种方式:服务器端.客户端.Ajax数据验证. 服务器端验证:当整个表单页面被提交后,在服务器端 进行验证.如果存在任何验证错 ...

  7. php的yii框架开发总结8

    EMailer是一个简单的封装PHPMailer类.利用这个扩展可以实现发邮件的功能. 下载地址:http://www.yiiframework.com/extension/mailer/ 下载解压把 ...

  8. php的yii框架开发总结7

    protected\config\main.php是整个网站中很重要的一个文件,引用文件,连接数据库,默认页面等都是在这里设置: 'import'=>array( 'application.mo ...

  9. php的yii框架开发总结5

    MVC架构之model类: 我的日报系统用到的数据表:tbl_dailyreport表 其中anthor_id是外键,对应tbl_user数据表的主键id,下面是tbl_user表 class Dai ...

随机推荐

  1. springcloud系列八 整合Hystrix

    feign本身是支持Hystrix的,所以不需要引入其他依赖: 我们可以看看feign这个项目的依赖,就是引入这个依赖的pom.xml 要想看这个很简单,点击那个依赖进去就可以了 点进去就可以看到 & ...

  2. MYSQL常用命令笔记(一)

    1.show databases; 显示数据库 2.create database test; 创建数据库test 3.use test: 使用这个数据库 4.创建表class: create tab ...

  3. fsockopen函数被禁用的解决方法

    判断fsockopen 是否可用:function_exists('fsockopen');如果没有开启 一.开启fsockopen函数 修改php.ini,将 disable_functions = ...

  4. day_07 深浅拷贝

    1. 基础数据类型的补充 1字符串的操作: 1.join 把字符串或者列表的的内拼接,拼接成字符串 和split相反--把字符串转换成列表 2.删除 字典和列表在循环中是不能进行删除的,可以在循环中把 ...

  5. Ansible故障

    常见问题一: [root@m01 ~]# ansible  -k 172.16.1.51 -m ping SSH password: [WARNING]: No hosts matched, noth ...

  6. IKVM:java代码c#调用

    在工作中遇到对接java接口,涉及到java加密或签名问题,.net无法实.就将java代码编辑为dll给.net调用 注:这里只做简单java代码处理,不涉及到复杂的java包 java文件处理: ...

  7. Spring配置问题:The prefix "util" for element "util:map" is not bound.

    在spring的头部文件中没有引入: xmlns:util=”http://www.springframework.org/schema/util” 原文:https://blog.csdn.net/ ...

  8. SQL server数据库端口访问法

    最近数据库连接,也是无意中发现了这个问题,数据库可根据端口来连接 我用的是sql2014测试的,在安装其他程序是默认安装了sql(sql的tcp/ip端口为xxx),服务也不相同,但是由于比较不全,我 ...

  9. opencv-将分离合并图像(Red通道>125置255<=置0)

    #include <iostream> #include <opencv2/opencv.hpp> #include "opencv2/imgproc/imgproc ...

  10. C++二维数组的动态声明

    int **a  =  new int* [m]   //分配一个指针数组,将其首地址保存在a中   . for(int i = 0; i < m; i++)   //为指针数组的每个元素分配一 ...