如何检查CakePHP是否存在Model?

Cho*_*eat 4 php cakephp

我在通用函数中动态加载模型,我注意到有时我想跳过加载模型,因为它引发了404错误.

如何检查模型是否存在?

就像是:

if($this->modelexists($type) {
  $this->loadModel($type);
} else {
  return "xxx";
}
Run Code Online (Sandbox Code Playgroud)

Old*_*ool 8

由于你没有指定你的版本,我将我的答案分为两部分,一部分为1.3分,一部分为2.0分.

CakePHP 1.3

loadModel()如果找不到模型,该方法将返回false,请参阅API文档.所以只检查它不会返回false,如:

if(!$this->loadModel($type)) {
    return "xxx";
}
Run Code Online (Sandbox Code Playgroud)

CakePHP 2.0

如果模型类不存在,该loadModel()方法将抛出一个MissingModelException,所以只需捕获它.

请参阅有关此内容的API文档.

例:

try {
    $this->loadModel($type);
} catch(MissingModelException $e) {
    // Model not found!
    echo $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)

  • 这在2.x中不起作用,尽管文档说它确实如此.文档:http://api.cakephp.org/2.4/class-Controller.html#_loadModel说抛出异常,$ this-> loadModel()将返回false.但是在进一步检查时,我发现了一个Cake PHP问题,指的是文档错误:https://cakephp.lighthouseapp.com/projects/42648/tickets/3664-Controller-loadModel-not-throwing-MissingModelException (3认同)