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动作的参数而已。 查看详细内容…
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
);
如此而已…
CakePHP SQLite数据库使用方法及PHP SQLite配置方法
CakePHP DISTINCT 查询唯一记录
用CakePHP一般都是进行一些普通的查询操作,当涉及到唯一性查询的时候着时记我费了一些头脑,找了很多资料都没能解决,国内更是一些有价值的资料没有。还是在国外的网站上找到了些蛛丝马迹。
假如项目中用的是findAll查询,若要查询唯一记录可以这样写:
$this->Model->findAll(null, "DISTINCT Model.*');
若项目中用了CakePHP1.2的paginate组件,查询唯一记录可以这样写:
$this->paginate['fields'] = array('DISTINCT Model.*');
$this->set('contents', $this->paginate());
Godaddy主机空间CakePHP .htaccess编写方法
CakePHP的框架默认的.htaccess不能完美支持Godaddy主机空间。也不是Godaddy空间的Htaccess有问题,而是我们没有写好.htaccess。您可以参考如下代码来配置您的CakePHP项目。 查看详细内容…
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):
- # 不重写subdirectory目录
- <IfModule mod_rewrite.c>
- RewriteEngine On
- RewriteBase /
- RewriteCond %{REQUEST_URI} ^/subdirectory/(.*)$
- RewriteRule ^.*$ - [L]
- </IfModule>
- <IfModule mod_rewrite.c>
- RewriteEngine on
- RewriteBase /
- RewriteRule ^$ app/webroot/ [L]
- RewriteRule (.*) app/webroot/$1 [L]
- </IfModule>
很多站长会将自己的网站加上一个Google网站管理员工具,假如用CakePHP开发的项目,也需要对主目录的.htaccess加以修改。代码如下: 查看详细内容…
CakePHP requestAction使用方法
CakePHP中View层有一个方法为:$this->requestAction(url)。望文生意,此方法可以解释为:请求Action。使用此方法可以大大的减少项目中的冗余代码。
比如我们有一个商品管理的Controller为StoreController,一个文章管理的Controller为PostController。以前当文章中需要调用最新的商品时我们可能会这样写:
- class PostController extends AppController {
- var $name = "Post";
- var $uses = array("Post", "Store");
- var $layout = '';
- var $paginate = array(
- "limit" => 10,
- "order" => array("Post.created DESC"),
- );
- function index() {
- $this->set("posts", $this->paginate());
- // 调用最新的商品
- $this->set("newStores",
- $this->Store->findAll(
- array("Store.display" => 1),
- null,
- array("Store.created DESC"),
- 10
- )
- );
- }
- }
这样项目中的冗余代码会变的很多,不利于管理。合理的利用requestAction是最明智的选择。
使用requestAction后$uses可以不用加载Model: Store,认真看一下代码就明白了。 查看详细内容…
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
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快速开发框架之一。
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… 查看详细内容…
