2011-06-29 20 views
0

私は2つのプラグインを使用しているアプリケーションを作成しています。 今後の使用のため、2つのプラグインが一緒に使用されているか別々に使用されているかを確認したいと思います。 モデルが存在するかどうかをチェックし、そうでなければロジックを実行する必要があります。 もし私が試してみたら($ this-> loadModel( 'Model')){etc} 私はモデルが存在しないと言ってエラーが出ますが、ロジックが進行しないようにするエラーはありません。 。モデルが存在するかどうかを確認するCakephp

基本的に私がしたい:他

{DO->これを}(モデル - >()が存在する)場合 {DO-> somethingelse}

Iは、(PHPの関数でclass_existsを使用してみました)が、そのモデルが存在するかどうかにかかわらずfalseを返します。

答えて

-1

あなたはこれを行うことができます:$モデルがnullである

$model = ClassRegistry::init("User"); 

場合、これはUserモデルが

+3

実際には決してヌルを次のように

$models = array_merge( App::objects('model'), App::objects('MyPlugin.model') ); 

また、純粋なPHPでこれを行うことができます!クラスが見つからない場合は、 そのAppModel。 成功のブール値を返すApp :: import()で確認する必要があります – mark

+0

こんにちはマーク、ありがとうございました。 – Manu

+0

が間違っていますが、これは新しいクラスを初期化しますが、とにかく宣言されたモデルと一致しません –

0

私としてApp::objects('model')を使用することになりますが、コード内のすべての場所からこれを行うことができます 存在しないことを意味し2.x(これがいつ実装されたかはわかりません)。

class AppController extents Controller { 
    private function _modelExists($modelName){ 
     $models = App::objects('model'); 
     return in_array($modelName,$models); 
    }  
} 

//Somewhere in your logic 
if($this->_modelExists('SomeModel')){ 
    //do model exists logic 
} else { 
    //do other logic 
} 

* App::objects('model')は、プラグインからのモデルが含まれないことに注意してください。あなたは何ができる:

if(class_exists('SomeModel')){ 
    //do model exists logic 
} else { 
    //do other logic 
} 
// The pitfall of this approach, is that it will not assure 
// that `SomeModel is a decedent of the `Model` class. 
関連する問題