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

同様の問題が発生しました。

エラー メッセージ... does not have a method 'initialize' ...とは別に、もう 1 つのメッセージがありました... does not have a method 'startup' ... .

Controller問題は、代わりにディレクトリ内にコンポーネントファイルを作成したことでしController/Componentた。

于 2014-06-25T06:27:35.130 に答える