質問

Cake 1.2 には、開発者がモデルを作成する必要がなく、実行時に Cake が検出作業を行ってモデルを作成できる機能があります。このプロセスは毎回行われ、適切ですが、私の場合は非常に危険です。これについてどこかで読んだのですが、今私はこれの悪い面を経験しています。

すべてのファイルを使用してプラグインを作成しましたが、すべてが素晴らしいようでした。それは、モデルの関連付けと関数のいくつかを使用しようとするまででした。すると、cake は、私が作成したこのモデルは存在しないと主張します。 スローとエラーの代わりにこの自動モデル機能を使用してケーキに絞り込みました!だから何が悪いのか分かりません!

この自動モデル機能を無効にする方法を知っている人はいますか?それは良い考えですが、プラグインのどこで間違ったのかが見つからないようです。エラーがあればとても助かります。

役に立ちましたか?

解決 2

ケーキ 1.2

これはハックであり、コアケーキファイルを編集する必要があるため醜いですが、これが私がそれを行う方法です:\cake\libs\class_registry.php :127行目

if (App::import($type, $plugin . $class)) {
    ${$class} =& new $class($options);
} elseif ($type === 'Model') {
    /* Print out whatever debug info we have then exit */
    pr($objects);
    die("unable to find class $type, $plugin$class");
    /* We don't want to base this on the app model */
    ${$class} =& new AppModel($options);
}

ケーキ2

Costa は、95 行目の init 関数で $strict を true に変更することを推奨しています。 Cake\Utility\ClassRegistry.php

init については Cake API ドキュメントを参照してください。

ClassRegistry.php - 初期化関数

他のヒント

実際にモデル ファイルを作成し、var $useTable = false を設定する可能性は常にあります。
これが求めているものではなく、モデルとその関連付けが実際に存在するが、Cake がそれらを見つけることができないようであれば、実際の両方のモデルの名前とそのクラス名を三重にチェックする必要があります。モデル定義およびアソシエーション定義内。

私の知る限り、自動モデリングを無効にすることはできません。

使用

var $useTable = false;

モデル定義で。

すべて削除 キャッシュされたファイル (app/tmp の下にあるすべてのファイル、フォルダーは保持します)

モデルが予期しない方法で動作しているように見えるほとんどの場合、モデルに加えた変更が含まれていないことがよくあります。それは、そのケーキがモデルの古いキャッシュされたバージョンを使用しているためです。

えーっと...どこから始めましょうか。まず、Alexander が提案したように、アプリのキャッシュをクリアします。

それでも同じ動作が発生する場合は、クラス名やファイル名に何か問題がある可能性があります。

覚えて ルール, 、コントローラーの場合:

* classname: BlastsController
* filename: blasts_controller.php

モデルの場合:

* classname: Blast
* filename: blast.php

霧にしないでください 不規則な語尾変化に対処する きちんと。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top