j0ker
(j0ker_)
March 4, 2011, 7:30am
1
Приветствую.
По мотивам wiki сделал вывод ошибок в своем лэйауте.
Экшн выглядит вот так:
public function actionError()
{
if($error=Yii::app()->errorHandler->error)
{
if(Yii::app()->request->isAjaxRequest)
echo $error['message'];
else
$this->render('error', $error);
}
}
Почему то ошибка 403 выводится в стандартном шаблоне Yii, хотя 404 перехватывается и выводится в моем лэйауте.
Что нужно сделать, чтобы ошибка 403 выводилась тоже в определенном мной лэйауте?
Похоже, что вы что-то не правильно делаете. Может быть 403-я ошибка выскакивает в модуле?
j0ker
(j0ker_)
March 4, 2011, 12:57pm
3
У меня приложение разделено на несколько частей как написано здесь. У каждой части есть свой конфиг, который выглядит примерно вот так:
return CMap::mergeArray(
require(dirname(__FILE__).'/main.php'),
array(
'components'=>array(
'urlManager'=>array(
'urlFormat'=>'path',
'urlSuffix'=>'.html',
'showScriptName'=>false,
'rules'=>array(
'admin'=>'site/index',
'admin/<_c>'=>'<_c>',
'admin/<_c>/<_a>'=>'<_c>/<_a>',
),
),
'errorHandler'=>array(
// use 'site/error' action to display errors
'errorAction'=>'site/error',
),
),
)
);
У каждого раздела есть свой контроллер Site с экшеном Error, который показан в моем первом посте. Во всех частях приложения ошибка 404 отрабатывается нормально (в каждой части свой layout), а вот 403 вылетает layout Yii (без оформление с трейсом).
Nafania
(Nafania293)
March 4, 2011, 1:09pm
4
403 это Access Denied - что у вас отвечает за права доступа?
j0ker
(j0ker_)
March 5, 2011, 6:29am
5
Фильтр accessControl, права разграничены на основе CPhpAuthManager.