我目前是CakePHP的初学者,并且玩过CakePHP 1.3,但是最近发布了CakePHP 2.0。
到目前为止,我喜欢它,但唯一的麻烦是它不返回Object,而是返回数组。我的意思是,必须执行$ post ['Post'] ['id']几乎没有道理。 (在我看来)仅执行$ post-> id更实用。
现在,在Google之后,我偶然发现了this链接,这在使用Form类时一直产生关于未定义索引的错误(猜测这是因为它获取的是对象版本而不是数组版本)。
我正在关注Blog教程(已经在1.3下关注了它,但是在2.0中又进行了介绍)
因此,有人知道如何在不干扰Form类的情况下实现这一目标吗?
霍什
参考方案
您可以创建其他对象变量。这样,您就不会干扰Cake的自动魔术,但可以使用$ modelNameObj-> id等格式访问数据;格式。
首先,如果您还没有一个,则在/ app / Controller中创建一个AppController.php。然后创建一个beforeRender()函数。这将在Cake的标准命名约定中查找数据,并从中创建其他对象var。
<?php
App::uses('Controller', 'Controller');
class AppController extends Controller {
public function beforeRender() {
parent::beforeRender();
// camelcase plural of current model
$plural = lcfirst(Inflector::pluralize($this->modelClass));
// create a new object
if (!empty($this->viewVars[$plural])) {
$objects = Set::map($this->viewVars[$plural]);
$this->set($plural . 'Obj', $objects);
}
// camelcase singular of current model
$singular = lcfirst(Inflector::singularize($this->modelClass));
// create new object
if (!empty($this->viewVars[$singular])) {
$object = Set::map($this->viewVars[$singular]);
$this->set($singular . 'Obj', $object);
}
}
}
然后在您的视图中可以像这样访问对象:
index.ctp
$productsObj;
view.ctp
$productObj->id;
我们要做的就是在Cake已经提供的变量名中添加“ Obj”。一些示例映射:
产品-> $ productsObj
产品类型-> $ productTypesObj
我知道这不是完美的方法,但它实际上可以实现您想要的功能,并且可以在所有模型中使用。
CakePHP AJAX布局 - php我正在使用CakePHP应用程序和jQuery Mobile。在CakePHP应用程序中,RequestHandler已打开,现在,jQuery Mobile将所有请求作为ajax请求发出,但不仅需要整页,而且需要完整的页面布局。我需要requesthandler,并且尝试设置布局,强制渲染,关闭自动布局,没有任何效果,cake只返回我视图的内容。我真的很想…
CakePHP:为插件创建动作挂钩 - php我想包括与Wordpress中类似的动作挂钩。我已经阅读了有关编写插件的章节,但是我希望能够在不更改父应用程序代码的情况下对其进行维护。是否对此有任何支持?如果没有,有没有好的方法?我有一些想法,但我担心自己会重新发明轮子。 参考方案 就在这里。CakePHP Event System它的工作原理与WordPress的挂钩非常相似,但效果更好。您可以在不同的…
Cakephp 3.x如何获取session_id - php在PHP中,要获取会话ID,我们必须像这样使用:session_id();如何在Cakephp 3.x中获取ID? 参考方案 您可以按以下方式访问会话ID,$this->request->session()->id()
CakePHP分页和排序 - php好像我已经尝试了一切,所以现在我来找你。我正在尝试订购数据,但进展不顺利,对Cake来说有点新。这是我的代码:$this->set('threads', $this->paginate('Thread', array( 'Thread.hidden' => 0, 'Thr…
php Singleton类实例将在多个会话中保留吗? - php举一个简单的例子,如果我想计算一个不使用磁盘存储的脚本的命中次数,我可以使用静态类成员来执行此操作吗?用户1:<?php $test = Example::singleton(); $test->visits++; ?> 用户2:<?php $test = Example::singleton(); $test->visits+…