常用cakephp功能--随手摘记

1.   controller需要调用来自不同model中的数据时,在controller文件中加上

var $users = array(‘Post’, ‘User’);

   

2.   model文件对应的db不存在

var $useTable = false;

 

    同时,改变model对应的表名

var $useTable = ‘some_table’;

   

3.  组件

   (1) 自定义组件:创建app/controllers/components/math.php文件           

<?php
      class MathComponent extends Object {
            function doComplexOperation($amount1, $amount2) {
                return $amount1 + $amount;
            }
       }
?>

 

 

  (2)   在控制器中引用组件

$components = array(‘Math’,‘Session’);

 

  (3)   在组件中使用其他组件

<?php
class CustomComponent extends Object {
    var $name = "Custom"; // 组件名称
    var $components = array( "Existing" ); // 使用的其它组件
    function initialize(&$controller) {
        $this->Existing->foo();
    }
    function bar() {
        // ...
    }
}
?>

 

4. 配置组件(Auth、Cookie、Email等) 在控制器(Controller)中的beforeFilter() 方法中完成。

    组件可以有beforeRender和beforeRedirect回调函数,会分别在页面被输出之前或被重定向之前被调用。(可以设置组件的enable属性为false来禁止函数被调用)

 

5. 保存数据

    (1) save保存格式化后的数据数组:

save(array $data = null, boolean $validate = true, array $fieldList = array())

 

注:当save()被调用时,被传递的第一个参数首先将被cakephp的校验机制进行校验,若验证条件失败,则会导致保存数据失败。

 

  (2) create方法重置模型的状态信息:

create(array $data = array());

 

    如果参数$data(同样应该是前面提到的数组格式)被传递,那么模型的实例将会为保存该数据(可以通过$this->data访问)做好准备。

 

  (3) saveField方法保存单个字段:

 saveField(string $fieldName, string $fieldValue, $validate = false)

 

 

6. Session组件常用于交互会话信息,所包含常用方法及用法如下:

  (1) write($name, $value);

$value 写入到名 $name session 里面。 $name 能使用 分割数 譬如:

 $this->Session->write('Person.eyeColor', 'Green');

 

 

  (2) read($name);

  将 session 中名为 $name 的值读取出来。 $name 能使用“点”分割数组.

 

  (3) delete($name);

  将 session 中名为 $name 的值删除.

 

  (4) $this->Session->destory();

    删除所有的Session保存值。

 

  (5) 用于设置会话变量,可以在视图页面进行输出.

例:$this->Session->setFlash(__('Member\'s registration succeeded', true));

 

 

7. 由控制器向视图页面传值。

  控制器代码:

$username   = $member['Member']['username'];
$name       = $this->data['Member']['name'];
$name_kana  = $this->data['Member']['name_kana'];
$address1   = $this->data['Member']['address1'];
$address2   = $this->data['Member']['address2'];
$tell       = $this->data['Member']['tell'];
$zip        = $this->data['Member']['zip'];
$birth_date = explode('-', $member['Member']['birth_date']);
$age = date('Y') - $birth_date[0];
$sex = $this->Code->field('name', array('Code.cd' => $member['Member']['sex']));

$this->set(compact('username','name','name_kana','address1','address2','tell','zip','age','sex'));

   

  视图页面代码:

<?php echo $username.$name.$name_kana.$address1.$address2.$tell.$zip; ?>

 

8 . 日期选择框的应用。

  (1) 默认日期:2000-1-1

echo $this->Form->year('birth_date', 1930, date('Y'), 2000, array('empty'=>false)).'年'
     .$this->Form->month('birth_date', 1,array('monthNames'=>false,'empty'=>false)).'月'
     .$this->Form->day('birth_date', 1,array('empty'=>false)).'日';

 

注:
    'monthNames' ------ 数字显示,不定义则显示字母类型
    'empty'  ------ 取消首个空白记录

 

 

  (2) 无默认日期

echo $this->Form->year('birth_date', 1930, date('Y'), null, array('empty'=>false)).'年'     
     .$this->Form->month('birth_date',null,array('monthNames'=>false,'empty'=>false)).'月'
     .$this->Form->day('birth_date',null,array('empty'=>false)).'日';

   

  (3) 组合format形式(无默认日期)

echo $this->Form->input('birth_date', array('dateFormat' => 'MDY', 'minYear' => 1930, 'maxYear' => date('Y'), 'separator'=>' '));

   

  (4) 组合format形式(默认日期:2000-1-1)

echo $this->Form->input('birth_date', array('dateFormat' => 'MDY', 'minYear' => 1930, 'maxYear' => date('Y'), 'selected' => '2000-1-1', 'separator'=>' '));

 

 

9 .错误信息的处理

  (1)在app/app_error.php文件中的AppError类中添加一个新方法。

<?php
class AppError extends ErrorHandler {
	function businessError($params) {
	    $this->controller->set('msg', $params['msg']);
	    $this->_outputMessage('business_error');
	}
}
?>

   

  (2) 创建视图文件 app/views/errors/business_error.ctp

<?php
echo $msg;
?>

   

  (3) 在控制器、组件中抛出错误信息

$this->cakeError('businessError', array('msg'=>'URL wrong'));

   

 近期本人开通了微信订阅号“CakePHP学习”,欢迎大家的关注。
常用cakephp功能--随手摘记