【发布时间】:2015-10-26 03:29:37
【问题描述】:
我正在使用 CakePHP 3,并且想更改随安装提供的方便的 PagesController 的行为。
他们在尝试查找和呈现视图文件 (.ctp) 时使用的当前解决方案是使用 try{} 块,该块运行良好。 实际代码:
try {
$this->render(implode('/', $path));
} catch (MissingTemplateException $e) {
但就我而言,最常见的情况是 .ctp 文件不存在。 (如果它不存在,它将继续使用默认视图并尝试从数据库中获取内容,但这不是我的问题。)
在我的修改版本中,最常见的情况是抛出 MissingTemplaceException,这似乎有点矫枉过正。 为什么我不能简单地检查文件是否存在?
我在这里思考吗?如果我是,我如何检查文件是否存在?
经过一番折腾,我找到了 APP 常量。这有效:
$path = func_get_args();
$file = APP.'Template'.DS.'Pages'.DS.implode('/', $path).'.ctp';
if (file_exists($file))
{
// Render the file.
}
else
{
// Render some default file.
}
【问题讨论】:
-
为什么不直接在 catch 块中执行默认代码而不是抛出异常?
-
@arilia - 这就是我目前所做的,它有效。我只是认为检查文件是否存在会更快。