CakePHP 2.0对象不是数组 - php

我目前是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+…