1

私はここを見て、同じ問題を抱えている人を見つけましたが、解決策はどれも私にはうまくいかないようでした.

今、私は更新するように与えられたウェブサイトに新しいページを追加しようとしています (私は自分自身で新しいサイトフォームを開始しませんでした)。同じテーブルに私のライブサイトにあるものがあるので、このコードを CakePHP の新しいコピーで使用します。ただし、「オブジェクト以外のメンバー関数 find() への呼び出し」が表示されます。これは、find コマンドを呼び出す方法または CakePHP 構成ファイルが変更された方法に関係があると思います。

これを Routes.php に追加します:

         Router::connect('/events', array('controller' => 'events', 'action' => 'eventDetails'));

私のモデルコード:

   class Event extends AppModel {
var $name = 'Event';

var $validate = array(
    'id' => array(
        'numeric' => array(
            'rule' => array('numeric'),
            //'message' => 'Your custom message here',
            'allowEmpty' => true,
            //'required' => false,
            //'last' => false, // Stop validation after this rule
            //'on' => 'create', // Limit validation to 'create' or 'update' operations
        ),
    ),
    'startdate' => array(
        'numeric' => array(
            'rule' => array('numeric'),
            //'message' => 'Your custom message here',
            //'allowEmpty' => false,
            //'required' => false,
            //'last' => false, // Stop validation after this rule
            //'on' => 'create', // Limit validation to 'create' or 'update' operations
        ),
    ),
    'endate' => array(
        'numeric' => array(
            'rule' => array('numeric'),
            //'message' => 'Your custom message here',
            'allowEmpty' => true,
            //'required' => false,
            //'last' => false, // Stop validation after this rule
            //'on' => 'create', // Limit validation to 'create' or 'update' operations
        ),
    ),
    'spaces' => array(
        'alphanumeric' => array(
            'rule' => array('alphanumeric'),
            //'message' => 'Your custom message here',
            'allowEmpty' => true,
            //'required' => false,
            //'last' => false, // Stop validation after this rule
            //'on' => 'create', // Limit validation to 'create' or 'update' operations
        ),
    ),
    'info' => array(
        'alphanumeric' => array(
            'rule' => array('alphanumeric'),
            //'message' => 'Your custom message here',
            'allowEmpty' => true,
            //'required' => false,
            //'last' => false, // Stop validation after this rule
            //'on' => 'create', // Limit validation to 'create' or 'update' operations
        ),
    ),
    'info' => array(
        'alphanumeric' => array(
            'rule' => array('alphanumeric'),
            //'message' => 'Your custom message here',
            'allowEmpty' => true,
            //'required' => false,
            //'last' => false, // Stop validation after this rule
            //'on' => 'create', // Limit validation to 'create' or 'update' operations
        ),
    ),
    'img' => array(
        'alphanumeric' => array(
            'rule' => array('alphanumeric'),
            //'message' => 'Your custom message here',
            'allowEmpty' => true,
            //'required' => false,
            //'last' => false, // Stop validation after this rule
            //'on' => 'create', // Limit validation to 'create' or 'update' operations
        ),
    ),
);
//The Associations below have been created with all possible keys, those that are not needed can be removed

var $belongsTo = array(
    'Team' => array(
        'className' => 'Team',
        'foreignKey' => 'team_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),
);
}

このコードはポイントし、すべての db フィールドをチェックすると思います。これは別のモデルからコピーしたコードですが、テーブルで使用するために変更しました。

私のコントローラーコード:

class EventsController extends AppController {
var $name = 'Events';
var $uses = array();

function eventDetails() {

    $EventData = $this->Event->find('all');

    print_r($EventData);


    die();      
} //End of function eventDetails()

 } // End of EventsController Class

画面エラー:

        Notice (8): Undefined property: EventsController::$Event        [APP/controllers/events_controller.php, line 10] Fatal error: Call to a member function   find() on a non-object in /var/www/vh/app/controllers/events_controller.php on line 10

これが扱う唯一の 2 つのテーブルはイベントとチームです。これらは小文字で保存され、最後に「s」が付きます。チームテーブルはすでにデータベースにあり、イベントテーブルは私が作成した新しいものです。私が言うように、これらのテーブルをライブ サイトからテスト データベースにエクスポートし、新しい CakePHP セットアップを使用すると、テーブルの内容が出力されます。

したがって、CakePHP のセットアップ方法に関係するものである必要があり、これ (ケーキ) はまだ私にとって非常に新しいものです。新しいモデル/コントローラー/テーブルを作ったのはこれが初めてです。私が行っているのは、既に構築され動作しているコントローラーに新しい機能を追加することだけです。

私もこのコードを試してみました。このタイプのエラーに関する別の投稿から '$this->set('events'' を取得しました

できる限り明確にするよう努めましたが、そうでない場合はお知らせください。

助けてくれてありがとう!

グレン・カーティス。

4

1 に答える 1

1

削除する:

var $uses = array();

CakePHP には独自の継承モデルがあります。そのため、$usesかなり直感に反します。

$uses = array('Event', 'Foo'); // explicitly use Event and Foo model
$uses = array(); // don't use any models

デフォルトでは、CakePHP は暗黙的$usesにコントローラーの対応するモデルに設定しますEvent。したがって、単純に削除するのがCakeのやり方です。

于 2012-07-31T16:09:06.140 に答える