在应用程序主配置中:
'errorHandler'=>array(
// use 'site/error' action to display errors
'errorAction'=>'site/default/error',
),
在 /protected/modules/site/controllers/ 我有 DefaultController.php 操作错误:
public function actionError()
{
if($error=Yii::app()->errorHandler->error)
{
if(Yii::app()->request->isAjaxRequest)
echo $error['message'];
else
$this->render('error', $error);
}
}
但如果我有错误,我会看到:
DefaultController cannot find the requested view "error". (/home/web/framework/web/CController.php:897)
0 /home/web/framework/web/CController.php(800): CController->renderPartial('error', Array, true)
1 /home/web/apps/myapp/protected/modules/site/controllers/SiteController.php(67): CController->render('error', Array)
2 /home/web/framework/web/actions/CInlineAction.php(50): SiteController->actionError()
3 /home/web/framework/web/CController.php(309): CInlineAction->runWithParams(Array)
4 /home/web/framework/web/CController.php(287): CController->runAction(Object(CInlineAction))
5 /home/web/framework/web/CController.php(266): CController->runActionWithFilters(Object(CInlineAction), Array)
6 /home/web/framework/web/CWebApplication.php(283): CController->run('error')
7 /home/web/framework/base/CErrorHandler.php(332): CWebApplication->runController('site/site/error')
8 /home/web/framework/base/CErrorHandler.php(205): CErrorHandler->render('error', Array)
9 /home/web/framework/base/CErrorHandler.php(130): CErrorHandler->handleException(Object(CHttpException))
10 /home/web/framework/base/CApplication.php(713): CErrorHandler->handle(Object(CExceptionEvent))
11 [internal function]: CApplication->handleException(Object(CHttpException))
在 Yii 文档中:CErrorHandler 按以下顺序搜索视图对应的视图文件:
1.WebRoot/themes/ThemeName/views/system:这是当前活动主题下的系统视图目录。
2.WebRoot/protected/views/system:这是应用程序的默认系统视图目录。
3.yii/framework/views:这是Yii框架提供的标准系统视图目录。
为什么 Yii 使用模块时在 yii/framework/views 中找不到视图?