发新话题
打印

CakePHP中(un)bindModel和recursive的合理位置

CakePHP中(un)bindModel和recursive的合理位置

作者:老王

今天在IRC里讨论了几个关于(un)bindModel和recursive的合理位置的问题,主要焦点集中在(un)bindModel和recursive到底是放在Model中合适?还是放在Controller中合适?亦或是无所谓。

我的观点是(un)bindModel和recursive都应该仅仅出现在Model中,这样才是最MVC的。

在我看来,不管是(un)bindModel还是recursive,如果在Controller中使用,都暴露了Model的内部信息,所以他们应该仅仅出现这Model方法中。也就是说,一旦你的Action中出现了(un)bindModel或者recursive,你就应该尝试把他们转移到Model的某个方法中,这样才能保证Model的信息没有暴露。

我还不能肯定这样是正确的,有待进一步考虑。

TOP

all business logic related to data should be in the model

TOP

请教老王一个问题,cakephp可以用传统形式的URL运行吗?
加入服务器不支持mod_rewrite,也不打算用/index.php/controller/action这个path_info的形式的话,可否用传统的URL?
帮助像偶一样的菜鸟

TOP

你看CAKEPHP的重写规则:
复制内容到剪贴板
代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
如果不用mod_rewrite,可以用类似下面的形式:
引用:
index.php?url=/controller/action/123

TOP

老王,FLEAPHP你研究得怎么样,我想问下,在fleaphp1.0.6里怎么直接用SQL语句进得数据库操作???
我知道有个findBySql,但这只能应用于SELECT。。。我想知道执行INSERT等等其它语句。

另:CakePHP有实现我上面的需求的方法吗?多谢了

TOP

谢谢老王!明白了。

另外如果想自定义错误处理类的话,也就是重写cake_log.php,但是又不想直接修改cake/lib/cake_log.php,还有没有更优美的方式?
帮助像偶一样的菜鸟

TOP

老实说我还没有用过cake_log.php,大概看了一下,cake内部都是使用uses('cake_log')这样的方式来加载的错误处理类,所以,如果不修改cake_log.php或者uses函数的话,很难实现你说的优美的方式。

TOP

发新话题