Cakephp检查模型是否存在

Cakephp检查模型是否存在,cakephp,model,exists,Cakephp,Model,Exists,我正在创建一个使用两个插件的应用程序。 为了将来使用,我想检查这两个插件是一起使用还是分开使用。 我需要检查模型是否存在,如果存在,执行一些逻辑,如果不存在-不存在。 如果我尝试If($this->loadModel('Model')){etc} 我得到一个错误,说模型不存在,这是我想要的,但我不想要一个阻止逻辑继续的错误 基本上我想要: 如果(Model->exists()){do->this} 否则{do->somethingelse} 我尝试使用php函数类_exists(),但无论模型是

我正在创建一个使用两个插件的应用程序。 为了将来使用,我想检查这两个插件是一起使用还是分开使用。 我需要检查模型是否存在,如果存在,执行一些逻辑,如果不存在-不存在。 如果我尝试If($this->loadModel('Model')){etc} 我得到一个错误,说模型不存在,这是我想要的,但我不想要一个阻止逻辑继续的错误

基本上我想要:

如果(Model->exists()){do->this} 否则{do->somethingelse}

我尝试使用php函数类_exists(),但无论模型是否存在,都返回false。

您可以这样做:

$model = ClassRegistry::init("User");
如果$model为null,则表示该用户模型不存在
您可以从代码中的每个地方执行此操作

从2.x开始,我将使用
App::objects('model')
(不确定何时实现)

*请注意,
App::objects('model')
将不包括来自插件的模型。你可以做:

$models = array_merge(
   App::objects('model'),
   App::objects('MyPlugin.model')
);
您也可以使用纯php实现这一点,如下所示

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.

其实它从来都不是空的!如果找不到该类,则返回AppModel。您需要使用App::import()进行检查,它返回一个布尔值successError,这个初始化是一个新类,无论如何它与您声明的modelmark的注释不匹配。此外,请参阅以获取更详细的答案。
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.