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())
{
$result = $this->createController($route);
if ($result === false) {
list($controller, $action) = explode('/', $route);
$controllerObject = $this->createController($controller, $this);
if ($controllerObject === false) {
throw new InvalidRequestException(\Yii::t('yii', 'Unable to resolve the request.'));
}
/** @var $controller Controller */
list($controller, $action) = $result;
$priorController = $this->controller;
$this->controller = $controller;
$status = $controller->run($action, $params);
$this->controller = $controllerObject;
$status = $controllerObject->run($action, $params);
$this->controller = $priorController;
return $status;
}

5
framework/base/Controller.php

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

Loading…
Cancel
Save