您的位置:首页 > 编程语言 > PHP开发

CakePHP FAQ(常见问题)整理

2017-05-27 10:04 218 查看
Q:CakePHP官方文档在哪里

A:http://book.cakephp.org/cn/view/876/The-Manual

Q: 如何替换cake默认的layout(全局模板页)?

A: 把在/cake/libs/view/templates/layouts/default.ctp 复制到 /app/views/layouts/default.ctp ,然后按需修改

Q: 使用UTF8 库时出现乱码(页面和?菘舛际荱TF8,只是显示取出的数据时乱码)?

A: 在1.2x中:在/app/config/databases.php的配置中添加’encoding’ => ‘UTF8′,cake则会在执行SQL前先执行一次SET NAMES $encoding

Q: model/behavior,view/helper,controller/component 之间是什么关系?

A: model view controller是常说的MVC模式,model一般负责数据存储,view负责页面显示(一般是页面模板),controller负责控制调用哪个model以及哪个view来显示结果,其他则是他们各自的辅助部分。

Q: 如何建立一个公共的controller(如何使所有controller都有相同的属性或方法)?

A: 把/cake/app_controller.php 复制到 /app/app_controller.php ,按需修改即可。(为什么是放到/app目录下而不是/app/controllers中呢?)

Q: 如何建立一个公共的model(如何使所有model都有相同的属性或方法)?

A: 把/cake/app_model.php 复制到 /app/app_model.php,按需修改即可。(为什么是放到/app目录下而不是/app/moclels中呢?)

Q: 如何建立一个公共的helper(如何使所有helper都有相同的属性或方法)?

A: 同上,推理可得。

Q: 如何使controller不自动加载model(建立一个不需要model的controller)?

A: 在controller中添加一个空值属性:var $uses = ”;

Q: 如何建立不需要读取数据库的model?

A: 添加属性声明:var $useTable = false;

Q: 如何在controller中调用多个model?

A: 添加属性声明:var $uses = array(‘Model1′, ‘Model2′);

Q: 如何在controller中临时(手工)调用其他model?

A:How to properly create a Model instance manually
Creating Reusable Elements with requestAction

Q: 在controller中如何调用component?

A: 在controller中声明:var $components = array(‘Mycomponent’);,然后就可以在方法中通过 $ths->Mycomponent 来调用

Q: 如何在component中访问controller

A: 在1.1.x中可以这样:

class RequestComponent extends Object

{

var $controller;

function startup(&$controller)

                                {

                                 $this->controller = &$controller;

                                }

}

Q: 如何使controller的方法不能直接通过URL访问?

A: 在方法名前加个_,如:function _test()

Q: 在controller的一个方法中,如何调用另一个方法的输出结果?

A: $this->render(‘另一个方法名’);,相关的还有$this->requestAction,详细见手册。

Q: 如何让view可以使用其他helper?

A: 在controller中声明:var $helpers = array(‘Form’,'Text’); (注:html是默认就有的,在1.2x中不需要再包含进去)

Q: 怎样在cake中使用smarty?

A:

Q: 如何获取由$form->input(‘var’)提交的数据?

A: 在controller中通过$this->params['url']['data'][$this->controller->modelClass]['var'] 取得

Q: 如何取得URL中如/store/buy/12 的参数值?

A: 在controller中通过$this->params['pass'][0] 取得

Q: 如何在cake中使用AJAX?

Q: 如何映射一个controller(不建立controller但可以使不同的URL指向同一个controller)?

Q: 如何在一个model中调用其他model?

Q: 如何使controller的action不调用它的view(没有view的action)?

Q: 如何动态关闭cakeSqlLog?

A: /app/config/core.php中,将Configure::write(‘debug’, 2);修改为Configure::write(‘debug’, 0);

Q: 如何在一个helper中调用另一个helper?

A: 设置var $helpers = array(‘Myhelper’); ,然后就可以在类中用$this->Myhelper来调用(注意属性大小写)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: