How to use components in cakephp

组件是封装了一定逻辑处理的,可以在控制器间共享使用的包。当你发现你总是需要在不同的控制器间来回拷贝代码的时候,也许就是时候把这些可以共有的代码打个包,写成组件了。

一:如何创建组件:

cakephp所有自定义的组件都需保存于/app/controllers/components/下,比如现在我新建了一个组件类如下:

<?php
class MathComponent extends Object {
 function xiangjia($amount1, $amount2) {
  return $amount1 * $amount2;
  }
 }
?>

那么我必需把该文件math.php保存于/app/controllers/components/目录下,注意类命名(MathComponet)与文件(math.php)命名方法,这点类似于Model,另外MathComponent从 Object 继承而不是 Component。如果从Component 继承,当这个组件和其他组件共用的时候,会产生无数的重定向问题。

二:如何引用组件:

在控制器中使用var $components = array("Math");即可引用组件,调用时要这样:$this->Math->xiangjia(19,20);//结果为380。

三:CakePHP内置组件:

  • Security
  • Sessions
  • Access control lists
  • Emails
  • Cookies
  • Authentication
  • Request handling

配置时需要在控制器(Controller)的beforeFilter()方法中完成.

function beforeFilter() {

$this->Auth->authorize = 'controller';

$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');

$this->Cookie->name = 'CookieMonster';

}

这便是一个在你的控制器beforeFilter()中配置组件的例子

但是,在控制器beforeFilter运行之前组件可能还需要一些特定的配置选项。因此,一些组件允许在$components数组中设置选项,比如:var  $components = array('DebugKit.toolbar' => array('panels' => array('history', 'session'));

备注:组件如何在控制器中使用若有不明之处可参照我的文章:Action view,add,edit,delete used in cakephp里的方法test(),该方法就是引用组件math的例子。

你可能感兴趣的:(TO,in,use,cakephp,how,Components)