常用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学习”,欢迎大家的关注。