Один адрес двумя контроллерами

Можно ли как-то сделать, чтобы один адрес мог обрабатываться двумя контроллерами?

Например, мне надо, чтобы главная страница обрабатывалась одним контроллером, если пользователь незалогинен, и другим - если наоборот.

Есть какие-нибудь идеи? Спасибо заранее.

автоматически - никак. Можо сделать третий контроллер-диспетчер, которій будет, в зависимости от залогиненности создавать соответствующий констроллер и вызывать соответствующий экшн.

А вообще надо попробовать обойтись без этого.

О, вроде придумал:

Не фонтан конечно

ну суть та же, только один из классов выступает диспетчером. Нормально, я не знаю задачи. может там красивее нельзя…

а я бы написал примерно так:

class SiteController extends CController

{

  public function actionIndex()

  {

      if (!Yii::app()->user->isGuest)

        $this->redirect(Yii::user->returnUrl);

      else

        $this->render('index');

  }

}

и что бы было? Надо ж выполнить указанное действие, а не редиректить. Редирект - это идея, но ты ж редиректишь все время в один итот же урл, а надо на разные, в зависимости от действия.

Я бы сделал тоже самое, только вместо

прям сюда же вписал бы код из MainController->actionIndex() - а

to phpdevmd

дублирование кода это не выход и в будущем очень тяжело в поддержке

Именно runController() запускается в самом Yii, когда обрабатывается адрес.

Я еще пробовал делать такое:

Но кажется такой вариант глючит в том плане, что MainController не знает где искать вью-файлы.

Так что, использую Yii::app()->runController(‘main/index’) и вам советую, если надо :)