Commit c1cb99ab by Qiang Xue

controller work.

parent cc0be8ad
...@@ -35,21 +35,26 @@ class Action extends Component ...@@ -35,21 +35,26 @@ class Action extends Component
public $controller; public $controller;
/** /**
* Runs the action with the supplied parameters. * @param string $id the ID of this action
* This method is invoked by the controller. * @param Controller $controller the controller that owns this action
*/
public function __construct($id, $controller)
{
$this->id = $id;
$this->controller = $controller;
}
/**
* Normalizes the input parameters for the action.
* The parameters will later be passed to the `run()` method of the action.
* This method is mainly called by the controller when running an action.
* @param array $params the input parameters in terms of name-value pairs. * @param array $params the input parameters in terms of name-value pairs.
* @return boolean whether the input parameters are valid * @return array|boolean the normalized parameters, or false if the input parameters are invalid.
*/ */
public function runWithParams($params) public function normalizeParams($params)
{ {
$method = new \ReflectionMethod($this, 'run'); $method = new \ReflectionMethod($this, 'run');
$params = $this->normalizeParamsByMethod($method, $params); return $this->normalizeParamsByMethod($method, $params);
if ($params !== false) {
call_user_func_array(array($this, 'run'), $params);
return true;
} else {
return false;
}
} }
/** /**
......
...@@ -89,6 +89,11 @@ class Application extends Module ...@@ -89,6 +89,11 @@ class Application extends Module
* @see language * @see language
*/ */
public $sourceLanguage = 'en_us'; public $sourceLanguage = 'en_us';
/**
* @var array IDs of application components that need to be loaded when the application starts.
* The default value is `array('errorHandler')`, which loads the [[errorHandler]] component
* to ensure errors and exceptions can be handled nicely.
*/
public $preload = array('errorHandler'); public $preload = array('errorHandler');
public $localeDataPath = '@yii/i18n/data'; public $localeDataPath = '@yii/i18n/data';
...@@ -99,12 +104,14 @@ class Application extends Module ...@@ -99,12 +104,14 @@ class Application extends Module
/** /**
* Constructor. * Constructor.
* @param string $id the ID of this application. The ID should uniquely identify the application from others.
* @param string $basePath the base path of this application. This should point to * @param string $basePath the base path of this application. This should point to
* the directory containing all application logic, template and data. * the directory containing all application logic, template and data.
*/ */
public function __construct($basePath) public function __construct($id, $basePath)
{ {
\Yii::$application = $this; \Yii::$application = $this;
$this->id = $id;
$this->setBasePath($basePath); $this->setBasePath($basePath);
\Yii::setAlias('application', $this->getBasePath()); \Yii::setAlias('application', $this->getBasePath());
$this->registerCoreComponents(); $this->registerCoreComponents();
...@@ -177,19 +184,6 @@ class Application extends Module ...@@ -177,19 +184,6 @@ class Application extends Module
} }
/** /**
* Returns the unique identifier for the application.
* @return string the unique identifier for the application.
*/
public function getId()
{
if (($id = parent::getId()) === null) {
$id = sprintf('%x', crc32($this->getBasePath() . $this->name));
$this->setId($id);
}
return $id;
}
/**
* Returns the directory that stores runtime files. * Returns the directory that stores runtime files.
* @return string the directory that stores runtime files. Defaults to 'protected/runtime'. * @return string the directory that stores runtime files. Defaults to 'protected/runtime'.
*/ */
......
...@@ -14,9 +14,9 @@ namespace yii\base; ...@@ -14,9 +14,9 @@ namespace yii\base;
* *
* Module mainly manages application components and sub-modules that belongs to a module. * Module mainly manages application components and sub-modules that belongs to a module.
* *
* @property string $id The module ID. * @property string $uniqueId An ID that uniquely identifies this module among all modules within
* the current application.
* @property string $basePath The root directory of the module. Defaults to the directory containing the module class. * @property string $basePath The root directory of the module. Defaults to the directory containing the module class.
* @property Module|null $parentModule The parent module. Null if this module does not have a parent.
* @property array $modules The configuration of the currently installed modules (module ID => configuration). * @property array $modules The configuration of the currently installed modules (module ID => configuration).
* @property array $components The application components (indexed by their IDs). * @property array $components The application components (indexed by their IDs).
* @property array $import List of aliases to be imported. This property is write-only. * @property array $import List of aliases to be imported. This property is write-only.
...@@ -35,10 +35,16 @@ abstract class Module extends Component implements Initable ...@@ -35,10 +35,16 @@ abstract class Module extends Component implements Initable
* @var array the IDs of the application components that should be preloaded when this module is created. * @var array the IDs of the application components that should be preloaded when this module is created.
*/ */
public $preload = array(); public $preload = array();
/**
* @var string an ID that uniquely identifies this module among other modules which have the same [[parent]].
*/
public $id;
/**
* @var Module the parent module of this module. Null if this module does not have a parent.
*/
public $module;
private $_id;
private $_basePath; private $_basePath;
private $_parentModule;
private $_modules = array(); private $_modules = array();
private $_components = array(); private $_components = array();
...@@ -49,8 +55,8 @@ abstract class Module extends Component implements Initable ...@@ -49,8 +55,8 @@ abstract class Module extends Component implements Initable
*/ */
public function __construct($id, $parent = null) public function __construct($id, $parent = null)
{ {
$this->_id = $id; $this->id = $id;
$this->_parentModule = $parent; $this->module = $parent;
} }
/** /**
...@@ -93,26 +99,21 @@ abstract class Module extends Component implements Initable ...@@ -93,26 +99,21 @@ abstract class Module extends Component implements Initable
*/ */
public function init() public function init()
{ {
\Yii::setAlias('@' . $this->getId(), $this->getBasePath()); \Yii::setAlias('@' . $this->id, $this->getBasePath());
$this->preloadComponents(); $this->preloadComponents();
} }
/** /**
* Returns the module ID. * Returns an ID that uniquely identifies this module among all modules within the current application.
* @return string the module ID. * @return string the unique ID of the module.
*/ */
public function getId() public function getUniqueId()
{ {
return $this->_id; if ($this->module && !$this->module instanceof Application) {
return $this->module->getUniqueId() . "/{$this->id}";
} else {
return $this->id;
} }
/**
* Sets the module ID.
* @param string $id the module ID
*/
public function setId($id)
{
$this->_id = $id;
} }
/** /**
...@@ -180,15 +181,6 @@ abstract class Module extends Component implements Initable ...@@ -180,15 +181,6 @@ abstract class Module extends Component implements Initable
} }
/** /**
* Returns the parent module.
* @return Module|null the parent module. Null is returned if this module does not have a parent.
*/
public function getParentModule()
{
return $this->_parentModule;
}
/**
* Checks whether the named module exists. * Checks whether the named module exists.
* @param string $id module ID * @param string $id module ID
* @return boolean whether the named module exists. Both loaded and unloaded modules * @return boolean whether the named module exists. Both loaded and unloaded modules
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment