1

我像这样创建我的组件

<?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 行]**

4

3 回答 3

7

Component我相信一个组件不应该扩展Object

class UtilComponent extends Component 
{

}

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

于 2012-05-18T05:21:53.233 回答
0

我也面临同样的问题

警告 (2):call_user_func_array() 期望参数 1 是有效回调,类 'ImageComponent' 没有方法 'initialize' [CORE\Cake\Utility\ObjectCollection.php,第 128 行]

警告 (2):call_user_func_array() 期望参数 1 是有效回调,类 'ImageComponent' 没有方法 'beforeRender' [CORE\Cake\Utility\ObjectCollection.php,第 128 行]

警告 (2):call_user_func_array() 期望参数 1 是有效回调,类 'ImageComponent' 没有方法 'shutdown' [CORE\Cake\Utility\ObjectCollection.php,第 128 行]

解决方案是:

然后将图像组件添加到控制器/组件中

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

使用类 ImageComponent 扩展组件 { ... }

于 2014-11-04T10:13:51.893 回答
0

遇到了类似的问题。

除了错误消息...没有方法“初始化”...,还有一条消息...没有方法“启动” ...。

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

于 2014-06-25T06:27:35.130 回答