4

モデルを使用しようとしていますが、致命的なエラーが発生したため、適切に自動ロードされていないと思います。

ErrorException [致命的なエラー]: クラス 'Properties_Model' が見つかりません

問題のあるコントローラー行:

$properties = new Properties_Model;

モデル:

class Properties_Model extends Model
{
    public function __construct()
    {
          parent::__construct();
    }

}

また、1 つが機能することを期待して、クラスを 3 つの異なる場所に配置しましたが、すべて失敗しました。アプリケーション/クラス/モデル アプリケーション/モデル アプリケーション/モデル

私は何が欠けていますか?

4

2 に答える 2

6

ああ、私はこの質問を私に直接電子メールで受け取りました(私のウェブサイトの連絡フォームを介して)!

これが私が回答したものです(この問題に遭遇する可能性のある他の人々のために)。

propertiesという名前のモデルの正しい場所は次の とおりです。

application/classes/model/properties.php

クラス定義は次のようになります

class Model_Properties extends Model { }

上記のアンダースコアをディレクトリ区切り記号と考えてください。つまり、アンダースコアを / に置き換えると、「model/properties」となり、これが の下のファイルになりますapplication/classes

コントローラーからモデルをロードするには、PHP の標準の new 演算子を使用するか、私が好む方法を使用できます。

$propertiesModel = Model::factory('Properties');

私がこの方法を好む理由は100%ではありません...しかし、それは私にとってはうまくいきます:)

于 2010-05-23T14:18:30.970 に答える
2

まず、コハナ3のfileyestemはコハナ2のようには機能しません!

K2では、オートローダーはクラス名を調べ、クラスのサフィックスに基づいて、さまざまなフォルダーでクラスを検索します。

K3では、アンダースコアをスラッシュに置き換えることにより、クラス名がファイルパスに「変換」されます。

すなわちClass Properties_Modelになりますclasses/properties/model.php

ご覧のとおり、この新しいシステムでモデルの接尾辞を使用しても、モデルをグループ化するのに実際には役立ちません。したがって、基本的に、接尾辞を付ける代わりに、クラス名の前に「モデル」を追加します。

Model_Propertyに位置していますclasses/model/property.php

詳細については、Kohana3ユーザーガイドを参照してください。

于 2010-05-22T19:07:57.330 に答える