Yii Framework Forum: Один адрес двумя контроллерами - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

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

#1 User is offline   rosko 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 211
  • Joined: 04-January 09
  • Location:Kiev, Ukraine

Posted 02 June 2009 - 06:19 PM

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

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

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

#2 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 02 June 2009 - 09:57 PM

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

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

#3 User is offline   rosko 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 211
  • Joined: 04-January 09
  • Location:Kiev, Ukraine

Posted 02 June 2009 - 10:06 PM

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



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

#4 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 02 June 2009 - 10:13 PM

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

#5 User is offline   3an 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 15
  • Joined: 16-January 09

Posted 02 June 2009 - 11:54 PM

а я бы написал примерно так:
class SiteController extends CController
{
  public function actionIndex()
  {
      if (!Yii::app()->user->isGuest)
        $this->redirect(Yii::user->returnUrl);
      else
        $this->render('index');
  }
}
0

#6 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 03 June 2009 - 12:08 AM

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

#7 User is offline   phpdevmd 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 73
  • Joined: 16-April 09

Posted 03 June 2009 - 02:09 AM

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

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

#8 User is offline   Zolter 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 377
  • Joined: 26-March 09

Posted 03 June 2009 - 02:35 AM

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

#9 User is offline   rosko 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 211
  • Joined: 04-January 09
  • Location:Kiev, Ukraine

Posted 03 June 2009 - 03:12 AM

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

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

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


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

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users