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'));