【问题标题】:How to import children() to Helper in CakePHP 2.0?如何在 CakePHP 2.0 中将 children() 导入 Helper?
【发布时间】:2013-07-19 12:46:25
【问题描述】:

我打算制作整个孩子的生成链接。因为 View 不允许使用 Model。这就是为什么我必须制作自己的助手来生成。然后我使用$this->Model->children($current_id, false, 'category');,但问题是我遇到了这样的错误

致命错误:在非对象上调用成员函数 children() /user/app/View/Helper/my_helper.php 在第 193 行

我的代码:

<?php
class MyHelperHelper extends AppHelper {
    var $helpers = array('Html','Paginator','Tree');

    function makechildrenlink($current_id, $category_id, $item_id) {
        $this->Category->children($current_id, false, 'category');




    }
}

?>

【问题讨论】:

  • 为什么要使用视图层从模型中获取数据?让控制器/组件执行此操作并将其传递给助手。此外,my_helper.php 不是 cake 2.x 中文件名的样子
  • my_helper.php 是我自己制作的工具之类的助手。因为有很多项可以使用 my_helper.php 中的函数,但 Helper 不能使用 children() 来列出 Parent 的所有子项。
  • Geeze - $this-&gt;Category。如果您从未在此助手中声明 this 应该是什么,这怎么可能起作用? PHP 不是魔法。 CakePHP 在一定程度上是这样,但也不是那么多。

标签: function cakephp cakephp-2.0 children helpers


【解决方案1】:

在您的控制器/组件范围内,您需要获取数据:

$this->loadModel('Category');
$categories = $this->Category->children($current_id, false, 'category');
$this->set(compact('categories')); // pass it down to the view

在视图中,您现在可以随心所欲地使用 $categories

echo $this->MyHelper->makeChildrenLink($categories);

例如。

而且,正如 cmets 中所述,您的助手必须是 View/Helper/MyHelper.php

【讨论】:

  • 但每个项目都需要使用功能。它们都是不同的类别。
  • 你可以迭代项目 - foreach 是你的朋友。
猜你喜欢
  • 1970-01-01
  • 2014-11-23
  • 1970-01-01
  • 2014-09-12
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多