Browse Source

patched controller and action creation

tags/2.0.0-beta
Alexander Makarov 12 years ago
parent
commit
a6961f3404
  1. 13
      framework/base/Application.php
  2. 5
      framework/base/Controller.php

13
framework/base/Application.php

@ -211,15 +211,16 @@ class Application extends Module
*/ */
public function runController($route, $params = array()) public function runController($route, $params = array())
{ {
$result = $this->createController($route); list($controller, $action) = explode('/', $route);
if ($result === false) {
$controllerObject = $this->createController($controller, $this);
if ($controllerObject === false) {
throw new InvalidRequestException(\Yii::t('yii', 'Unable to resolve the request.')); throw new InvalidRequestException(\Yii::t('yii', 'Unable to resolve the request.'));
} }
/** @var $controller Controller */
list($controller, $action) = $result;
$priorController = $this->controller; $priorController = $this->controller;
$this->controller = $controller; $this->controller = $controllerObject;
$status = $controller->run($action, $params); $status = $controllerObject->run($action, $params);
$this->controller = $priorController; $this->controller = $priorController;
return $status; return $status;
} }

5
framework/base/Controller.php

@ -142,8 +142,9 @@ class Controller extends Component
if ($actionID === '') { if ($actionID === '') {
$actionID = $this->defaultAction; $actionID = $this->defaultAction;
} }
if (isset($this->actionMap[$actionID])) { $actions = $this->actions();
return \Yii::createObject($this->actionMap[$actionID], $actionID, $this); if (isset($actions[$actionID])) {
return \Yii::createObject($actions[$actionID], $actionID, $this);
} elseif (method_exists($this, 'action' . $actionID)) { } elseif (method_exists($this, 'action' . $actionID)) {
return new InlineAction($actionID, $this); return new InlineAction($actionID, $this);
} else { } else {

Loading…
Cancel
Save