1

ヘルパー名 TicketHelper (TicketsController あり)、CommonHelper (コントローラーなし)、および ExcelHelper (コントローラーなし) を作成しました。TicketHelper 内では、CommonHelper の任意の関数を呼び出すと正常に動作します。ここでチケットヘルパーの例:

<?php
    class TicketHelper extends AppHelper {
    public $helpers = array('Session','Common');
    public function myFunction(){

        echo $this->Common->workfine();
    }
?>

同じアクションで CommonHelper を ExcelHelper に呼び出したところ、エラーが発生しました: 致命的なエラー: 非オブジェクトのメンバー関数 workfine() への呼び出し

4

2 に答える 2

2

何時間もチェックした後、コンストラクターに問題があることがわかりました

<?php
   class TicketHelper extends AppHelper {
   public $helpers = array('Session','Common');
   public function myFunction(){
    echo $this->Common->workfine();
   }

   //Here my problem constructor Note: function name and class name are the same 
   function TicketHelper (){
          //My code here
   }

   /**
    * It should be follow cakephp doc
    * function __construct($id = false, $table = null, $ds = null) {
    *        parent::__construct($id, $table, $ds);
    *       
    *  }
    *
    */

?>

于 2013-01-19T01:26:00.103 に答える
0

コントローラー内でヘルパーを使用しないでください。ビュー内のロジックにはヘルパーが使用されます。これはコントローラーに含まれていますが、ビューでアクセスできます。コントローラー間で共有されるロジックについては、 http://book.cakephp.org/2.0/en/controllers/components.html#creating-a-componentの代わりにコンポーネントを使用してください。

コントローラーでヘルパーを使用したい場合 (非推奨):

$view = new View($this);
$myHelper = $view->loadHelper('MyHelper');
于 2013-01-18T15:42:53.360 に答える