cakephp常见知识点汇总


Posted in PHP onFebruary 24, 2017

本文实例总结了cakephp常见知识点。分享给大家供大家参考,具体如下:

1. 调用其他控制器的模板,重定向

方法一:

在此调用/views/tasks/tasks下的hello.ctp模板

$this -> viewPath = 'tasks';
$this -> render('hello');

方法二(带参):

$this->redirect(array('controller'=>'users','action'=>'welcome',urlencode($this->data['姓名'].'haha')));

2. 查询

直接使用sql:

$this->PostContent->query("select * from user");
find():
$clue = $this->clue->find('all',
  array(
    'fields' =>array(
      'id',
      'title',
      'content'
    ),
    'order' => 'id ASC',
    'conditions' => array('id' => '1'),
  )
);

find的参数,第一个可以是all、first、count,第二个参数为一数组,数组的key可以是:conditions、fields、order、limit、offset、joins。

添加:

$this->clue->create();
$this->clue->save($this->data);

修改:

$this->clue->create();
$this->clue->save($this->data);

删除:

$this->clue->delete($id)

3. 不需要公共样式时

$this->layout = false;

不用渲染任何view

$this->autoRender = false;

4. 定义公共的方法/类

方法一:

可以在/app/Controller/AppController.php中定义公共的方法

调用

$this->test();

方法二:

在/app/controllers/components中创建UtillComponent.php

<?php
  class UtillComponent extends Object
  {
   function juanstr ($str) {
     return $str.'+juanstr';
   }
  }
?>

调用:

var $components = array('Utill');
$digit1 = $this->Utill->juanstr($digit1);

5. 定义提示信息

$this->Session->setFlash(__('The user has been saved'));

<p class="wrong"><?php echo $this->Session->flash();?></p>

或者

$this->Session->write('Message.auth',array('message'=>__('The user has been saved.',true),'element'=>'','params'=>array()));

<p class="wrong"><?php echo $this->Session->flash('auth');?></p>

6. session设置

可参考:https://3water.com/article/106557.htm

check(string $name);

检查Session中是否已有$name为键值的数据项.

del(string $name);
delete(string $name);

删除$name 指定的 Session 变量。

valid当Session有效时返回true,最好在read()操作前用它来确定你要访问的会话是否确实有效.

read(string $name);

返回 $name 变量值。

renew

通过创建新的seesion ID,删除原有的ID,将原有Session中信息更新到新的Session中。

write(string $name, mixed $value);

将变量 $name,$value写入会话.

error

返回最近由 Cake Session Component 产生的错误,常用于调试。

7. 表单

<?php echo $this->Form->create('Subject',array(
  'type' => 'post',
  'inputDefaults'=>array(
    'div'=>false,
    'label'=>false
    ),
  'url'=>array(
      'controller'=>'subjects',
      'action'=>'edit'
    ),
  'onsubmit'=>'return validateCallback(this, dialogAjaxDone);' //提交前验证
  )
);
echo $this->Form->input('id',array('type'=>'hidden'));
echo $this->Form->input('uid',array('type'=>'hidden'));
?>
<ul class="usr_info_basic">
<li>
  <div class="ti">下拉单选(编辑页面会自动判断选中)</div>
  <div class="ce">
<?php echo $this->Form->input('type',array('type'=>'select' ,'class'=>'ipt','options' => array(0=>'文章',1=>'专题', 2=>'图组')));?>
  </div>
</li>
<li>
  <div class="ti">多选</div>
  <div class="ce">
<?php
  echo $this->Form->input('pushtype', array('type'=>'select',
    'options' => $pushtype,//所有选项
    'multiple'=>'checkbox',
    'selected' => $pushtypes,//选中的项
));
?>
  </div>
</li>
</ul>
<div class="btns_3">
  <button class="btn3" type="submit"><span>保存</span></button>
  <button class="btn3 btn3_1 close"><span>取消</span></button>
</div>
<?php echo $this->Form->end();?>

8. 日志$this->log();

在controller直接调用:

$this->log('Something brok2',LOG_DEBUG);

或view里调用:

<?php $this->log('Something brok2',LOG_DEBUG); ?>

日志的类型大致有以下几种:

$levels = array(
  LOG_WARNING=> 'warning',
  LOG_NOTICE=> 'notice',
  LOG_INFO=> 'info',
  LOG_DEBUG=> 'debug',
  LOG_ERR=> 'error',
  LOG_ERROR=> 'error'
);

日志文件都保存在/app/tmp/logs目录。

在/app/config/core.php文件中有日志的配置选项:

define('LOG_ERROR', 2);

9. 渲染路径

echo APP . 'webroot' . DS;
//D:\wamp\www\cakephp\app\webroot\
echo APP . 'webroot' ;
D:\wamp\www\cakephp\app\webroot
PHP 相关文章推荐
小偷PHP+Html+缓存
Nov 25 PHP
apache php模块整合操作指南
Nov 16 PHP
PHP实现多进程并行操作的详解(可做守护进程)
Jun 18 PHP
php自动识别文件编码并转换为UTF-8的方法
Jun 12 PHP
ThinkPHP文件上传实例教程
Aug 22 PHP
PHP获取服务器端信息的方法
Nov 28 PHP
分享一段PHP制作的中文拼音首字母工具类
Dec 11 PHP
php设置页面超时时间解决方法
Sep 22 PHP
Linux安装配置php环境的方法
Jan 14 PHP
PHP实现基于mysqli的Model基类完整实例
Apr 08 PHP
PHP实现唤起微信支付功能
Feb 18 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
Sep 12 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
Feb 24 #PHP
PHP函数rtrim()使用中的怪异现象分析
Feb 24 #PHP
CakePHP框架Session设置方法分析
Feb 23 #PHP
cakephp2.X多表联合查询join及使用分页查询的方法
Feb 23 #PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
Feb 23 #PHP
php实现的XML操作(读取)封装类完整实例
Feb 23 #PHP
利用php生成验证码
Feb 23 #PHP
You might like
PHP递归删除目录几个代码实例
2014/04/21 PHP
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
2011/11/30 Javascript
JQuery写动态树示例代码
2013/07/31 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
jquery实现的淡入淡出下拉菜单效果
2015/08/25 Javascript
jQuery插件imgPreviewQs实现上传图片预览
2016/01/15 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
使用jquery给指定的table动态添加一行、删除一行
2016/10/13 Javascript
jQuery实现限制文本框的输入长度
2017/01/11 Javascript
jQuery实现获取h1-h6标题元素值的方法
2017/03/06 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
解决Vue不能检测数组或对象变动的问题
2018/02/24 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
python中scikit-learn机器代码实例
2018/08/05 Python
python数据结构之线性表的顺序存储结构
2018/09/28 Python
Python lxml模块的基本使用方法分析
2019/12/21 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
2020/03/04 Python
维多利亚的秘密官方旗舰店:VICTORIA’S SECRET
2018/04/02 全球购物
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
2016/11/20 面试题
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
老师推荐信
2013/10/28 职场文书
软件专业毕业生个人自我鉴定
2014/04/17 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
读书笔记怎么写
2015/07/01 职场文书
七年级作文之下雨天
2019/12/23 职场文书
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python
JS函数式编程实现XDM一
2022/06/16 Javascript