CakePHP去除Controller和Action完美优化Url地址

近来好像写有关CakePHP的文章比较多一些。搞的多了,难免会虚伪一下。这次刚写了一个小网站,顺便把新研究出来的有关CakePHP的知识共享一下。

这次程序方面没做太多的研究,主要考虑了一下网站优化,更确切的说是有关CakePHP Url地址的优化。

参考网站:中药材百科 - http://www.yaocai123.com

设置Url的文件为:app\config\routes.php

首页就不多说了,没有更改routes.php文件。

由栏目层说起:

中药材大全http://www.yaocai123.com/zhongyao/

中药种植http://www.yaocai123.com/zhongzhi/

中药处方http://www.yaocai123.com/chufang/

这三个地址,如果是用常规的CakePHP来写的话为三个Controller。分别为:zhongyao, zhongzhi, chufang。而现在这个项目只用到了一个Controller - MedicineController。在Routes.php中只需要要Controller和Action的名字隐藏掉,而貌似Controller的zhongyao只是MedicineController Index动作的参数而已。 查看详细内容…

版块:Cake文档 Tags: , , , 时间:2009-09-29 评论:(0)

CakePHP findAll获取随机数据记录

为了使搜索引擎每天都认为我的网站更新了一次。特意为网站首页加了一个缓存,缓存时间为一天。提取一条新闻,并摘取300个左右的字显示在主页某一块中。我管它叫做(随机消息)

用Sql语句可以直接写如下语句来获取随机记录:

SELECT * FROM table_name ORDER BY rand() LIMIT 5;

CakePHP获取随机记录要变通一下,研究了一下CakePHP生成SQL语句才搞明白。原来只需要这样:

$this->{ModelName}->findAll(
null,
array('ModelName.id', "rand() as oo") ,
array('oo'),
5
);

如此而已…

版块:Cake文档 Tags: , , 时间:2009-09-24 评论:(0)

CakePHP SQLite数据库使用方法及PHP SQLite配置方法

很荣幸做了晨阳集团的网站,用到的cakephp+sqlite。说起sqlite我还真的不是很懂,不过cakephp很强大,不用我去写数据驱动即可以完美的使用它。Show一下吧:http://www.chenyang.com。

类似的项目还有很多,比如:优酷网在线看电视剧 - http://www.9966.info,也是用的CakePHP程序,不过数据库为MySQL。

简要的说一下晨阳集团吧:晨阳集团是国内数一数二的水性漆生产企业,曾经参与过2008年奥运工程。年交税过亿的私人企业。

好了,切入正题:主要记录一下PHP环境中如何开启(配置)SQLite数据库支持查看详细内容…

版块:Cake文档 Tags: , 时间:2009-09-12 评论:(0)

CakePHP DISTINCT 查询唯一记录

用CakePHP一般都是进行一些普通的查询操作,当涉及到唯一性查询的时候着时记我费了一些头脑,找了很多资料都没能解决,国内更是一些有价值的资料没有。还是在国外的网站上找到了些蛛丝马迹。

假如项目中用的是findAll查询,若要查询唯一记录可以这样写:

$this->Model->findAll(null, "DISTINCT Model.*');

若项目中用了CakePHP1.2的paginate组件,查询唯一记录可以这样写:

$this->paginate['fields'] = array('DISTINCT Model.*');

$this->set('contents', $this->paginate());

版块:Cake笔记 Tags: , 时间:2009-05-21 评论:(2)

Godaddy主机空间CakePHP .htaccess编写方法

CakePHP的框架默认的.htaccess不能完美支持Godaddy主机空间。也不是Godaddy空间的Htaccess有问题,而是我们没有写好.htaccess。您可以参考如下代码来配置您的CakePHP项目查看详细内容…

版块:Cake文档 Tags: , , 时间:2009-04-13 评论:(0)

CAKEPHP .htaccess不重写某子目录或文件

CakePHP框架会把urls重写对自己的友好的urls,适合MVC项目的实施。假如有某一目录不需要CakePHP重写,假如没有重新定义.htaccess将无法访问此目录。假如配置环境为php fastCGI可能会出现:No input file specified.错误。

这时可以自己为.htaccess加一段代码,告诉服务器不转发此子目录即可,这时需要注意的是,此子目录的名称不能为CakePHP Controller的名称(name值)。

修改网站主目录中.htaccess如下(本人使用的CakePHP版本为,最新的CakePHP稳定版:1.2.2.8120 Stable):

CakePHP不重写某目录.htaccess
  1. # 不重写subdirectory目录
  2. <IfModule mod_rewrite.c>   
  3.     RewriteEngine On   
  4.     RewriteBase /   
  5.     RewriteCond %{REQUEST_URI} ^/subdirectory/(.*)$   
  6.     RewriteRule ^.*$ - [L]   
  7. </IfModule>   
  8.   
  9. <IfModule mod_rewrite.c>   
  10.     RewriteEngine on   
  11.     RewriteBase /   
  12.     RewriteRule    ^$ app/webroot/    [L]   
  13.     RewriteRule    (.*) app/webroot/$1 [L]   
  14. </IfModule>  

很多站长会将自己的网站加上一个Google网站管理员工具,假如用CakePHP开发的项目,也需要对主目录的.htaccess加以修改。代码如下: 查看详细内容…

版块:Cake文档 Tags: , 时间:2009-04-13 评论:(1)

CakePHP requestAction使用方法

CakePHP中View层有一个方法为:$this->requestAction(url)。望文生意,此方法可以解释为:请求Action。使用此方法可以大大的减少项目中的冗余代码。

比如我们有一个商品管理的Controller为StoreController,一个文章管理的Controller为PostController。以前当文章中需要调用最新的商品时我们可能会这样写:

PostController 代码如下
  1. class PostController extends AppController {   
  2.     var $name = "Post";   
  3.     var $uses = array("Post""Store");   
  4.     var $layout = '';   
  5.   
  6.     var $paginate = array(   
  7.         "limit"  => 10,   
  8.         "order" => array("Post.created DESC"),   
  9.     );   
  10.   
  11.     function index() {   
  12.         $this->set("posts"$this->paginate());   
  13.   
  14.         // 调用最新的商品   
  15.         $this->set("newStores",   
  16.             $this->Store->findAll(   
  17.                 array("Store.display" => 1),   
  18.                 null,   
  19.                 array("Store.created DESC"),   
  20.                 10   
  21.             )   
  22.         );   
  23.     }   
  24. }  

这样项目中的冗余代码会变的很多,不利于管理。合理的利用requestAction是最明智的选择

使用requestAction后$uses可以不用加载Model: Store,认真看一下代码就明白了。 查看详细内容…

版块:Cake文档 Tags: , 时间:2009-04-01 评论:(0)

CakePHP 1.2.2.8120稳定版已发布

备注:报导的晚了些,CakePHP 1.2.2.8120于2009.03.19日发布。

此版本修正了很多严重的错误,比如Paginator的链接问题,官方建议升级到最新版本。

站内报导:http://www.phplamp.org/tag/cakephp/

官方新闻:http://bakery.cakephp.org/articles/view/release-1-2-2-8120

下载地址:http://cakeforge.org/frs/?group_id=23&release_id=441

版块:业界动态 Tags: 时间:2009-03-28 评论:(0)

CakePHP1.2.*稳定版终于发布了

继CakePHP 1.2.0.7692稳定版发布后没几天CakePHP 1.2.1.8004稳定版也发布了。这发布的间格比较短,不知是否前个稳定版本出现比较严重的BUG。由于金融危机的影响,近来公司没进几个单子,1.2.0.7692版本也没有体验一下。

昨天粗略的看了一下1.2.1.8004稳定版,感觉CakePHP真的越来越强大了。

就我的了解,1.2.*稳定版相对于1.1.*稳定版增加的功能或是改动大致如下:

1. Form的管理从Html Helper中分离到Form Helper,也就是说你不能再用$html->input了;
2. I18n,I10n的多语言组件的加入;
3. 增加Auth权限验证组件,从此Caker们可以脱离OthAuth,ObAuth组件了;
4. 增加Paginator,这个没有试用,看了下手册介绍,感觉功能大大的;
5. Rss,Email,Xml的加入;
6. 载入自己的DB PDO
7. 增加memcache,Xcache,使我的能够很方便的实现负载均衡
8. 由于只是初体验,大概就体验到这些,8 9 10 … 以后再补充。

总之,我看好CakePHP,它是一个真正的PHP快速开发框架之一。

版块:Cake文档 Tags: 时间:2009-01-19 评论:(0)

Zend Framework VS CakePHP Framework

众所周知:Zend Framework与CakePHP Framework是两个现在非常流行的PHP框架之一,有着其各自的优点与用途。关于Zend Framework与CakePHP Framework的比较一位国处人士在他的博客中写道(原文地址-en):

Zend Framework是由Zend Technologies基于PHP5开发的一个的面向网络应用的开源框架。它的目的即是让开发变得简单。同样,CakePHP也是一个面向网络应用的开源框架,但它不仅仅能运行于PHP5环境,PHP4中它照样完美,它是由Cake Software Foundation公司在Ruby on Rails思想下开发的。

您可以用Zend Frameword迅速的创建一个可靠的测试程序。它能够使用现在非常有名的APIs,例如:Google, Amazon, Yahoo!, Flickr… 查看详细内容…

版块:Cake文档 Tags: , 时间:2008-12-12 评论:(0)