CakePHP常用技巧总结

问:开发中,程序一般设定debug为2,如何在某一个特定的action中关闭debug?
答:Configure::write('debug', 0);
问:如何静态化某个action渲染的视图?
答:过程就是先获得渲染的内容,再生成静态文件,这里看看如何获得渲染后的内容,大致两个方法:
1. 可以使用ob函数。
2. 在控制器里$this->requestAction('/controller/action/param', array('return'));
问:如何改变模型间的关系,生成高效的SQL语句?
答:在使用CakePHP开 发的过程中,必须尽可能保证DEBUG设置在2,时刻注意CakePHP帮你生成的SQL语句是否正常。这里就会常用到recursive和 unbindModel。这里需要注意的是,如果使用的是$this->model->read()的话,则可以 用$this->model->recursive = N;来调整级联数,如果使用的是$this->model->find() / $this->model->findAll()的话,他们的最后一个形参就是控制级联数的。
find( $conditions,
$fields,
$order,
$recursive);
string $conditions;
array $fields;
string $order;
int $recursive;
findAll( $conditions,
$fields,
$order,
$limit,
$page,
$recursive);
string $conditions;
array $fields;
string $order;
int $limit;
int $page;
int $recursive;
问:CakePHP程序和其他PHP程序的session不能统一?
答:这是因为缺省状态下,CakePHP修改了Cookie的名字,所以不能和其他PHP相对应,只要修改core.php文件对应选项即 可:define('CAKE_SESSION_COOKIE', ini_get('session.name'));缺省为PHPSESSID。
问:CakePHP程序中,URL大致有几种形式?
答:大致有三种形式。
第一种,借助mod_rewrite的能力,其URL大致如http://xxx/controller/action/param,只要开启Apache的重写模块即可。
第二种,是PATH_INFO形式,其URL大致如http://xxx/index.php/controller/action/param,如果想 使用这样的形式,只要修改core.php中对应行即可:define ('BASE_URL', env('SCRIPT_NAME'));
第三种形式,是传统的URL形式,其URL大致如http://xxx/index.php?url=/controller/action/param,至于为啥可以这样,你只要看看CakePHP的.htaccess文件写法就知道了。
问:如果CakePHP程序中,仅仅是显示一些静态页面,怎样处理?
答:使用缺省的/pages控制器,缺省就带有几个例子。
问:常用动作如何统一命名?
答:常用动作统一命名,有助于标准化处理,所谓常用动作指的是CRUD常见操作,如:
class ExampleModel extends AppController
{
var $name = 'Example';
function index()
{
}
function add()
{
}
function edit($id)
{
}
function view($id)
{
}
function remove($id)
{
}
}
问:CakePHP1.2中如何设置input标签,并验证?
答:在CakePHP1.2中,已经不在推荐使用html助手,而使用新的form助 手,设置input标签大概如“<td><?php echo $form->text('Model.field', array('size' => 50)); ?></td>”,验证错误信息大概如“<td><?php echo $form->error('Model.field', 'error msg')?></td>”
问:编辑数据的时候,如何方便的显示待编辑信息?
答:CakePHP中,只要你使用form助手生成表单,则会自动从控制器的$this->data中提取自己的值。
function edit($id = null)
{
if(! empty($this->data))
{
if($this->Model->create($this->data) && $this->Model->save())
{
$this->flash('msg', '/controller/action/param');
exit();
}
}
$this->Post->id = intval($id);
$this->data = $this->Post->read();
}
问:如何复用一个action?
答:以前bakery里一篇文章介 绍根据$this->params['requested']来判断是否return,然后使用requestAction来完成复用,实际这个判 断方式有bug,当使用$this->requestAction('/controller/action', array('return'))这样带有return参数的调用时,会出错。更好的判断方式如下:
function view($id = null)
{
$this->Model->id = intval($id);
$this->Model->read();
if(! empty($this->params['return']))
{
return $this->Model->data;
}
$this->set('model', $this->Model->data);
}
问:大部分动作使用Auth组件来控制权限,但少部分不用,如何实现?
答:因为大部分动作都要使用Auth组件来控制权限,所以最好放在AppController里,大概代码如下:
class AppController extends Controller
{
var $components = array('Auth');
这样在组件初始化的时候,会自动判断权限。
而对于少部分例外,只要在相应的子控制器里设置allow就可以了,具体如下(比如我们想Threads控制器的index,view动作可以自由访问,不用Auth控制权限):
class ThreadsController extends AppController
{
var $name = 'Threads';
function beforeFilter()
{
$this->Auth->allow('index', 'view');
}
问:如何实现主题功能,同时提供多种风格界面?
答:CakePHP1.2 已经具备了theme功能,我们只要在app_controller.php中定义var $view = 'Theme',就会载入theme.php文件,然后会根据我们的设置(var $theme ='themeName';)定位具体的主题目录,如果你没有定义,缺省的主题目录名字为themed,然后我们建立新的目录(如css,js),就ok了。
问:如何设置并访问命名的GET变量?
答:一般在CakePHP中,GET变量是不命名的,大体形式如/users/view/123这个样子,然后参数会被自动带入方法的形参之中,但是有些 时候,我们还是需要使用命名的GET变量的,这个时候大体形式如/users/view/name:value,然后我们可以在控制器里通 过$this->namedArgs数组来访问命名的GET变量,如$this->namedArgs['name']。
问:如何设置view里可以访问的数据?
答:简单的说,我们只要在控制器里进行$this->set('name', 'value');之类的操作就可以了,但是实际上,如果你只是想set控制器$this->data中的变量的 话,这样的set代码完全可以省略,因为控制器的$this->data变量会被复制到视图的$this->data的变量中,所以你完全不 必set这样的变量,只要在视图文件中直接echo $this->data['Model'][...]就可以了。当然,有时候我们不得不set一些变量,这个时候,我们还是有一种技巧可以让代码更 简单的:
$var1 = 'text';
$var2 = 'text';
$var3 = 'text';

$this->set(compact('var1','var2','var3'));
哈哈,利用compact函数,我们可以用一条set语句完成看似要多条才能完成的操作。
问:如何在控制器里实现责任链?
答:控制器里有一个beforeFilter属性,如果我们想让一个动作执行前先进行若干操作(比如:aaa, bbb, ccc),那么我们只需要在控制器类中声明var $beforeFilter即可:
复制内容到剪贴板
代码:

class AppController extends Controller
{
var $beforeFilter = array('aaa', 'bbb', 'ccc');
function aaa()
{
// ...
}
function bbb()
{
// ...
}
function ccc()
{
// ...
}
}
从零到一:OptimizePI Pre-layout PDN前仿真实战指南 本文详细介绍了如何使用OptimizePI进行电源完整性(PDN)前仿真,从软件安装配置到元器件建模、去耦电容配置及仿真参数设置,提供了实战技巧和常见问题排查指南。通过OptimizePI的Pre-layout仿真,工程师可以在PCB布局前优化电源分配网络,显著提升设计效率并降低成本。 阅读详情

相关推荐

智能解决装箱问题:使用优化算法实现高效包装

装箱问题(Bin Packing Problem)是组合优化领域中的一个经典问题,主要涉及如何将一系列对象高效地装入有限数量的容器(或“箱”)中,同时满足特定的约束条件。这个问题的目标是最小化所需使用的箱子数量或者最大化箱子的装载效率,以减少空间或资源的浪费。

MindOpt_003的博客 5546

如何快速搭建一个CakePHP项目

使用Composer和Bake,只需简单的几步,便可快速生成CakePHP脚手架程序。

般若 2840

WIFI中CSI的读取

学习目标: 目前正在做基于WIFI的无设备定位,准备使用信道状态信息(CSI),学习一下。 目前采集数据环境已经搭建好,准备研究信号的预处理。 学习内容: 1、 信号的读取——read_bf_file函数的研究 2、 3、 4、 1. read_bf_file详解: %READ_BF_FILE Reads in a file of beamforming feedback logs. % This version uses the *C* version of read_bfee, ...

sz3076799的博客 8892

CakePHP你必须知道的21条技巧

  原文链接:http://www.avatarfinancial.com/pages/cake/这篇文章可以说是CakePHP教程中最经典的了。虽然不是完整的手把手系列,但作者将自己使用CakePHP的经验总结了21条,这些尤其是对新手十分有用。翻译时故意保留了一些CakePHP中特有的词语没有翻译,如controller、model等。相信学过CakePHP的人应该马上就能理解它们

Jesse的技术手册 834

角谱迭代与傅里叶变换迭代算法(GS)的原理及其实例演示分析

角谱迭代与傅里叶变换迭代算法(GS)的原理及其实例演示分析 目前,迭代法和强度传输方程(TIE)法是两类典型的非干涉相位检索技术(Phase Retrieval,被称为相位恢复、相位检索、相位反演法、相位复原等)。迭代法中的经典算法是Gerchberg-Saxton(GS),随后,出现了包括错误减少算法(ER)、混合输入输出法(HIO)、梯度搜索算法、角谱迭代算法等改进算法。...

简单光学 2万+

【python爬虫实战】Python 抓取京东商品信息与评论,做竞品分析

本项目通过爬取京东平台商品数据,实现了完整的电商竞品分析流程。文章首先介绍了项目目标和技术栈,包括Python、Requests、BeautifulSoup等工具。然后详细解析了京东页面结构,包括商品列表页、详情页和评论页的特点。核心部分展示了商品列表爬取、评论数据获取以及竞品分析三个关键步骤的代码实现,每部分都包含运行结果和原理讲解。通过情感分析和关键词提取,项目能够对比不同产品的用户评价差异。最后,文章还讨论了合规性考量、优化建议和常见问题解答。该方案不仅适用于市场调研,也为企业制定营销策略提供了数据支

2503_91057718的博客 1万+

cakephp $this->html->css,CakePHP - 中文手册

Helper(帮助类)Section 1 HelpersHelper类就是为视图提供了常见且通用的方法,更好更快的格式化或者展现数据。HTML Helper介绍HTML Helper是Cake用来使开发变得迅速且不会乏味的一个好方法。HTML Helper有两个主要的目的:帮助插入那些经常用到的HTML代码,帮助更快更方便的创建一个Form。下面的文章中,我们将介绍绝大多数有用的方法,不过记住 h...

weixin_34142444的博客 506

uniapp实战:5分钟搞定PDA激光扫码功能(附完整代码)

本文详细介绍了在Uniapp应用中快速集成工业PDA激光扫码功能的实战方案。通过解析PDA硬件扫码与手机摄像头扫码的核心机制差异,提供了完整的广播监听封装类代码,并演示了在Vue页面中的集成使用方法,帮助开发者高效解决仓储、零售等行业的条码扫描需求。

weixin_29239661的博客 456

cakephp中recursive的作用

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34026276的博客 207

全国30米分辨率逐年植被覆盖度(FVC)数据集

植被覆盖度是描述地表植被的重要参数与生态环境的基本指标,在大气圈、土壤圈、水圈和生物圈中都占据着重要的地位,区域及全球范围的植被覆盖度估算对植被及相关领域的研究具有重要意义。分别对LANDSAT 5/7/8系列数据计算FVC,其中Landsat5 和Landsat 7NDVI计算利用 B4和B3波段,Landsat8 和Landsat9 NDVI计算利用 B5和B4波段。算法从当年所有观测数据中,以低云、低探测角度和最高NDVI值为标准,选择最佳的可用像元值,并进行换算。(3) FVC的计算。

地球资源数据云的官方博客 1808

Cadence 设计实践笔记-小哥allegro 2层板笔记

规范建立文件夹本章节主要跟着B站PCB入门首选视频-小哥Cadence Allegro 2层板视频,结合自己的实践一步步完成一个完整的PCB板的设计。规范建立文件夹建立八个文件夹我使用的Cadence 17.4 有些差异原理图绘制原图绘制首先要熟悉原理图工作原理工作原理下面是这个项目的原理图重点关注电源新建原理图库打开Cadence 软件创建项目新建工程 File ==========》Project我这里选择了Enable PSPice 试试能不能仿真,新建项目如下。

我的专栏 1481

cakephp index.php,CakePHP开发常用技巧详解

问:开发中,程序一般设定debug为2,如何在某一个特定的action中关闭debug?答:Configure::write('debug', 0);问:如何静态化某个action渲染的视图?答:过程就是先获得渲染的内容,再生成静态文件,这里看看如何获得渲染后的内容,大致两个方法:1. 可以使用ob函数。2. 在控制器里$this->requestAction('/controller/ac...

weixin_30748139的博客 207

TC3XX - MCAL知识点(三):MCU EB-tresos配置说明及代码浅析

AURIX 2G Tc3xx的配置相较AURIX 1G Tc2xx来讲简化了许多,但是依赖于数据手册的理解来讲整个MCU功能做了较大增强,此处先简单的介绍一下,本文前期先补充介绍一下英飞凌手册的阅读规则,因为后面的文章会基于此文的一些缩写进行截图寄存器之类的。MCU在AUTOSAR架构里面的图示如下MCU驱动程序负责配置SCU、GTM、CCU6、GPT12和STM外设。驱动程序提供由AUTOSAR指定的运行时服务。

梦想技术家 2874

cakephp $this->html->css,CakePHP 使用小技巧

知道主键 ID 更新一条数据,代码示例:php$this->Order->id = $id;$this->Order->saveField('status', $status);点赞的时候需要+1,如何更新数据库?php$this->Widget->updateAll(array('Widget.numberfield' => 'Widget.number...

weixin_29920889的博客 326

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

CakePHP一些零碎的技巧

CakePHP一些零碎的技巧   --来自逸舟的博客 快速创建静态页面 我想实现功能: 已知:建立几个页面,它们仅包含静态数据,使用默认layout,没有任何model 要求:不用在controller里面为每个静态页面定义一个action,这种方法太笨拙了,根本不适合快速建立静态页面! 实际上只要使用pages controller就可以做到——只要在 views/pages 文...

weixin_30709061的博客 263

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【CakePHP】几个CakePHP知识点

如何禁止布局? 如果需要禁止布局功能的动作或控制器比较多的话,那么可以在控制器中统一设置autoLayout为false,如果只是个别的模板的话,那么最好是直接在模板文件里设定$this->autoLayout = false,而不要在控制器里设定,毕竟使用布局与否是一个视图逻辑。 视图助手的一些注意事项? 在模板里使用图片的时候,最好是使用助手的方式,如:echo $html-

CDLucifer的专栏 1604

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

CakePHP 使用小技巧

知道主键 ID 更新一条数据,代码示例: php$this->Order->id = $id; $this->Order->saveField('status', $status); 点赞的时候需要+1,如何更新数据库? php$this->Widget->updateAll( array('Widget.numberfield' => 'Widget.numberfield

666

Cakephp 入门

Cakephp 2.0依然保持着Cakephp框架的各种优良传统,其中之一就是非常易于新手入门,几乎不做任何复杂的配置即可使用。非常可惜的是,Cakephp 2.0手册竟然没有了中文翻译,1.3的翻译又是有各种老,让想学习Cakephp同时英语又不是很好的同学们非常郁闷啦。这里我给大家带来 Cakephp的经典教程,十分钟博客创建,是的,十分钟,通过CakePHP 2.0框架创建一个轻型博客!

sedulousaresy的专栏 3994

从Django看CakePHP模板技术的弊端

作者:老王CakePHP的模板技术基本上沿用了Rails的方式,也使用了layout技术(链接),子模板的内容会替换layout中的$content_for_layout变量。这样的方式很简单,但它也有很多弊端,比如说title的渲染是由layout中的$title_for_layout变量负责的,通常CakePHP程序员是通过在Controller里使用$this->pageTi

phphot 3568

CakePHP Tools 插件使用教程

CakePHP Tools 插件使用教程 1、项目介绍 CakePHP Tools 是一个包含多种实用工具的 CakePHP 插件,旨在为许多项目提供便利。该插件包含了各种助手(helpers)、行为(behaviors)、组件(components)和 shell 脚本,以增强 CakePHP 应用程序的功能。 2、项目快速启动 安装 首先,通过 Composer 安装 CakePHP Tool...

gitblog_00539的博客 651

CakePHP中文教程2

第三章 安装CakePHP1,Requirements    你必须有一个服务器,具备程序和库来运行CakePHP1.1 服务器的要求        1.HTTP服务端(比如Apache),下面的选项要打开:sessions, mod_rewrite(虽然不是必须但是建议有)    2.PHP 4.3.2或者更高版本,CakePHP在PHP4和5下都能很好工作    3.数

freeglad的专栏 6751

CAKEPHP3.7安装

安装 cakephp是简单,易于安装的。最低要求仅需要一个web服务器和一份CAKEPHP的副本代码

zeroone的专栏 1228

CakePHP:让PHP开发变得像蛋糕一样简单!

CakePHP是一个高效、安全的PHP MVC框架,通过约定优于配置理念简化开发流程。它提供ORM系统、代码生成工具和内置安全措施,显著提升开发效率。核心特性包括:1)快速安装和清晰的目录结构;2)强大的数据库抽象层和查询构建器;3)完整的MVC架构实现;4)丰富的视图助手和模板系统。特别适合需要快速开发中大型Web应用的项目,能减少30%以上的开发时间,同时确保代码质量和安全性。

javajedi的博客 1266

CakePHP中文教程1

1,读者这份手册是为了那些想快速建立web程序的人所写。CakePHP是为了帮助PHP各个层次用户简单快速的创建健壮、可维护的程序这份手册需要一些PHP和HTML的基础知识,对MVC编程模式的一些了解。2,CakePHP是免费的    遵循MIT License,主页http://www.cakephp.org3,社区        更多信息http://www.cakep

freeglad的专栏 8616

CakePHP 概览

CakePHP 的设计是为了让共通的网络开发变得更加轻松,简单。通过提供给您一个全能工具箱来让 您很好地整体或者单独地使用它。 这篇概要的目的是介绍CakePHP的一般概念,并且为您介绍这些概念是如何在CakePHP中得到实现 的。如果你急于开始一个项目,你可以 开始教程, 或者 直接参考文档. 规约来替代设定 CakePHP提供的基本构造包括class名,文件名,数据库table名。尽管这...

zeroone的专栏 553
上一篇: 为Drupal 添加Javascript
下一篇: CakePHP中启用Admin
pythoner
博客等级 码龄18年 15粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值