2

CakePhPでアプリケーションの開発を始めました。チュートリアル以外は使ったことがありません。賢明で「ばかチェック」をするために、私はいくつかのスケルトンコードを実行しましたが、これまでのところ、コードにうまくコピー/パスタされています。しかし:私は障害にぶつかりました。

私は、cakePHPが標準の継承のために指示する命名規則に従いました。正しい実装のように見えるものは、デフォルトにフォールバックしているように見えます。誰かが落とし穴を見たり、何か提案がありますか?

コントローラー->app/ controller / VenuesController.php

表示->app/ View / Venues / view.ctp

モデル->app/ Model / Venue.php

コントローラとビューはうまくリンクしているようで、期待どおりに変数/配列を操作できます。

テストの目的で、モデルでこれを宣言してテストしています。

public static function VenueModelTest() {
 return true;
}

そして、私はそれをコントローラーで実行しようとしています:

Venue::VenueModelTest();

私が得るエラーは次のとおりです。

エラー:クラス'Venue'が見つかりません
ファイル:C:[...] \ app \ Controller \ VenuesController.php
行:43

デバッグを試みました。たとえば、コントローラー内からvar_dump($ this-> Model)を実行しました(ビューに渡されました)。これは単にNULLを出力します。そのため、ルーティングに何らかの問題があると思います。

しかし、誰もがその理由を理解できますか?

よろしくお願いします。リック

*編集:モデルがロードされていないことを確認できます。私が含める場合:

$this->loadModel('Venue');

...コントローラーの適切な場所で機能します。

明らかにこれは理想的ではありません...なぜそれが機能しないのか誰かがスパイできますか?乾杯リック

要求に応じて、ここに完全なメインコントローラーがあります:

<?php

// Venue model
// /app/Model/Venue.php

class Venue extends AppModel // implements ModelInterface
{

    public static function VenueModelTest() {
     return true;
    }

}

?>

*編集-金髪のコピー&ペーストの問題のため、静的に追加されました。繰り返しになりますが、これはSTATICオブジェクトであり(したがって、どこからでもアクセスできる必要があります-私は思います!)、呼び出しは次のとおりです。

$venue = Venue::VenueModelTest();

そして、エラーは上記のとおりです。また、モデルの負荷を手動で強制すると、機能します。

4

2 に答える 2

0

モデルファイルを投稿してください。

.ctpではなくサフィックス.phpを使用していること、および$ this-> name='xxxx'を宣言していないことを確認してください。

于 2012-10-26T15:27:13.727 に答える
0

モデルは自動的にロードされています (命名規則は適切です)。間違ってアクセスしているだけです:

コントローラーでは、次のように Model メソッドにアクセスします。

$this->Model->action();

したがって、あなたの場合は次を使用します:

$this->Venue->VenueModelTest();
于 2012-10-26T15:34:14.490 に答える