如果用户试图在URL中键入控制器中不存在的操作,我如何重定向到或在我的网站中呈现无效页面?我想要一个共同的代码,因为我在网站上有很多控制器,这样,如果一个用户类型的行动是错误的或不存在将重定向到页面说"你丢失或请求页面没有找到"?
当涉及到控制器和操作时,如果你的URL管理器配置正确设置,Yii将自动执行此操作。
在config/main.php中,在urlmanager
部分:
'urlManager'=>array(
'showScriptName' => false,
'urlFormat'=>'path',
'useStrictParsing'=>true,
'rules'=>array(
// Remove all the default Yii rules
// Add your own specific rules
),
),
这里有几点:
- 我假设你使用干净的url从以下教程
-
useStrictParsing
防止Yii在尝试匹配url时过于慷慨 - 删除Yii的默认通用控制器:动作路由规则意味着你的应用中没有不指定的方法。
如果你正在谈论在Controller Action中抛出错误,你可以使用Yii的CException类(es)。
public function actionCheckOk()
{
if($ok)
{
$this->render('ok');
}
else
{
throw new CHttpException(404, 'Page not found');
}
}