/** * This is the default 'index' action that is invoked * when an action is not explicitly requested by users. */ public function actionIndex() { $i = 0; //check last category segment while (isset($_GET['cat' . ++$i])) {} $alias = isset($_GET['cat' . --$i]) ? $_GET['cat' . $i] : 'index'; //find category by alias $this->category = Category::model()->published()->findByAttributes(array('alias' => $alias)); if ($this->category == NULL) { //if $alias is no category alias, may be it's model alias and $prev_alias it's category alias $prev_alias = isset($_GET['cat' . --$i]) ? $_GET['cat' . $i] : false; if ($prev_alias == false) $this->redirect('/errors/not_found'); $this->category = Category::model()->published()->findByAttributes(array('alias' => $prev_alias)); if ($this->category == NULL) $this->redirect('/errors/not_found'); $_GET['alias'] = $alias; } $this->model = ModelFactory::getModel($this->category); if ($this->model == NULL) $this->redirect('/errors/not_found'); //see parent render function $this->render('index'); //simple speed demonstration :-) echo Y::stats(); }