`
lesorb
  • 浏览: 121419 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CakePHP开发之控制器-Controller

阅读更多
在CakePHP里,一个controller用于管理应用程序某一方面的逻辑.大多数情况下,controller被用于管理独立model的逻辑,controller的名字总是复数形式.

每个controller可以包含任意数量的方法(action).

一个action,是controller里的一个独立的方法.这个controller.action对象的方法将被Dispatcher类分发执行.

一.Controller变量
$name
使用这个变量来为类设置正确的遵循驼峰命名法(具体见inflector.php).
$users
在controller使用多个model.
$helpers
使用这个变量来让controller在view里面装载helper.HTML helpers是自动被读取的,但是可以用这个变量来指定其他的helper.
$layout
该变量的值为你想为这个controller使用layout的名字.
$autoRender
将这个变量设为false能让action在render之前自动停止.
$beforeFilter
用于想让一些代码在每次action前被调用执行.
将这个变量设置成一个数组,该数组包含了action.
$components
这个变量用来(定义)装载需要的组件.

二.Controoler的主要方法有

1.beforeFilter在每个controller ction 调用前执行它.

2.afterFilter在每个 controller action 调用后执行.

3.set(string $var, mixed $value);
这个方法是view从controller得到数据的主要方法.(和struts中form.set()类似,但是没有get(),因为它不像struts中那样是对一全bean操作)
这个方法可以传递任何数据,当调用了set()后,相应的变量就可以在view中访问到.当有多个变量需要set的时候,可以结合compact函数来操作,如:
$this->set(compact('a','b','c','d',...));


4.redirect(string $url)通过此方法来通知用户应该继续访问什么地方.

5.flash(string $message,string $url,int $pause);这个方法将在你的flash页面(app/views/layouts/flash.ctp)上显示提示信息[$messate],停顿[$pause]秒,然后重定向用户到指定的url.

6.paginate()当查询多条数据需要分页时的相关函数,对应的变量和set()视图方法与之类似.

7.validateErrors()返回在一次不成功的保存中生成的错误个数.

8.validate根据一个model预定义的有效性规则验证该model的数据.

9.render(string $action, string $layout, string $file);方法是在controller action结束时自动调用的,输出名字为action的view.也可以在controlle逻辑里的任意位置调用这个方法输出视图.

10.beforeRender
在controller逻辑之后,并且在输出视图之前被调用.


其他在Object类中定义在controller里仍然可用的方法:

requestAction(string $url, array $option);

这个方法可以在任意位置调用某个controler的action并且返回rener后的视图.
可以用requestAction从另一个controller action 获取数据,也可以从另一个controller获取整个输出后的视图.一般不建议这样来调用加载controller,因为这样的加载相当与两次的逻辑调用,相关的组件,helper,view都将加载,无疑,这增加了系统的开销.

log(string $message, int $type=LOG_ERROR);
这个方法用来记录web应用程序里发生的不同事件.

postConditions(array $data);
用于将传入的$this->data格式化成model条件数组.

三.Controller参数:
在CakePHP controller里,可以通过$this->params来访问controler的参数.
这个变量用来传递到 controller 的数据,以及提供对当前请求信息的访问.
$this->params最常见的用法是用于访问客户端通过POST或者GET方法提交给controller的参数列表.

$this->data

用来处理来自HTML helper的POST表单数据.
$this->params['form']

来自任何表单的POST数据都存储在这里,包括$_FILES里的信息...


1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics