2

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

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

この自動モデル機能を無効にする方法を知っている人はいますか?良い考えですが、プラグインのどこが間違っているのかわからないようです。エラーが発生すると非常に役立ちます。

4

5 に答える 5

3

ケーキ1.2

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

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についてはCakeApiDocsを参照してください

ClassRegistry.php-init関数

于 2008-09-20T03:36:02.847 に答える
3

実際にモデル ファイルを作成し、var $useTable = false を設定する可能性は常にあります。
これがあなたが求めているものではなく、モデルとその関連付けが実際に存在するのに、Cake がそれらを見つけられないように見える場合は、すべてのモデルの名前とそれらのクラス名を実際のモデル定義および関連付け定義で。

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

于 2008-09-19T08:12:03.993 に答える
1

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

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

于 2008-09-28T22:25:39.933 に答える
1

使用する

var $useTable = false;

モデル定義で。

于 2008-09-19T08:15:31.740 に答える
0

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

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

コントローラーのルールを覚えておいてください:

* classname: BlastsController
* filename: blasts_controller.php

モデルの場合:

* classname: Blast
* filename: blast.php

不規則な変化を適切に処理することを忘れないでください。

于 2009-04-18T20:20:02.343 に答える