cakephp2.x组件无法正常工作

时间:2012-05-18 05:18:06

标签: cakephp components

我像这样创建我的组件

<?php
class UtilComponent extends Object
{
   function strip_and_clean( $id, $array) {
      $id = intval($id);
     if( $id < 0 || $id >= count($array) ) {
        $id = 0;
     }
      return $id;
   }
}

并像这样使用

var $name = 'Books';
    var $uses = array();
    var $components = array('Util');
    public function index($id = 0){
        $this -> set('page_heading','Packt Book Store');
        $book=array(
            '0'=>array(
                'bookTitle'    =>'Object Oriented Programming with PHP5',
                'author'       =>'Hasin Hayder',
                'isbn'         => '1847192564',
            'releaseDate' => 'December 2007'
                ),
            '1'=>array(
                'bookTitle'    =>'Building Websites with Joomla! v1.0',
                'author'       =>'Hagen Graf',
                'isbn'         => '1904811949',
            'releaseDate' => 'March 2006'
                ),
            );
        $id = $this->Util->strip_and_clean( $id, $book);
        $this->set('book',$book[$id]);
        $this->pageTitle='Welcome to the Packt Book Store!';
    }

但是我收到了这个错误

**call_user_func_array()期望参数1是有效的回调,类'UtilComponent'没有方法'initialize'[CORE \ Cake \ Utility \ ObjectCollection.php,第130行] **

3 个答案:

答案 0 :(得分:7)

我认为某个组件应该扩展Component而不是Object

class UtilComponent extends Component 
{

}

然后,组件将继承initialize()方法。

答案 1 :(得分:0)

遇到了类似的问题。

除了错误消息 ...没有方法'初始化'... ,还有一条消息 ...没有方法'startup'。 ..

问题是我在Controller目录中创建了组件文件,而不是Controller/Component

答案 2 :(得分:0)

我也面临像

这样的问题

警告(2):call_user_func_array()期望参数1是有效的回调,类&#39; ImageComponent&#39;没有方法&#39;初始化&#39; [CORE \ Cake \ Utility \ ObjectCollection.php,第128行]

警告(2):call_user_func_array()期望参数1是有效的回调,类&#39; ImageComponent&#39;没有一种方法&before;之前&#39; [CORE \ Cake \ Utility \ ObjectCollection.php,第128行]

警告(2):call_user_func_array()期望参数1是有效的回调,类&#39; ImageComponent&#39;没有方法&#39;关闭&#39; [CORE \ Cake \ Utility \ ObjectCollection.php,第128行]

解决方案是:

将Image组件添加到控制器/组件中,然后

更改类ImageComponent扩展对象{...}

使用类ImageComponent扩展Component {...}