继承 | yii\base\Module » yii\di\ServiceLocator » yii\base\Component » yii\base\Object |
---|---|
可用自版本 | 2.0 |
模块模块和应用程序类的基类
一个模块代表一个子应用程序包含MVC元素本身,如模型、视图、控制器等.
一个模块可能由\yii\base\modules。
\yii\base\components 可能注册的模块,这样他们在全球范围内访问在模块。
更多细节和使用信息模块,请参阅指南文章模块
公共属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
$controllerMap | array | 从控制器ID映射到控制器配置。 | yii\base\Module |
$controllerNamespace | string | 控制器类的命名空间. | yii\base\Module |
$defaultRoute | string | 这个模块的默认路由. | yii\base\Module |
$id | string | 一个ID,惟一地标识此模块等模块有相同的父母 | yii\base\Module |
$layout | string|boolean | 布局应该申请的观点在这个模块。 | yii\base\Module |
$module | yii\base\Module | 这个模块的父模块。 | yii\base\Module |
$params | array | 自定义模块参数(名称= >值)。 | yii\base\Module |
公共方法
受保护的方法
方法 | 描述 | 定义在 |
---|---|---|
defaultVersion() | 返回默认模块版本. | yii\base\Module |
事件
事件 | 类型 | 描述 | 定义在 |
---|---|---|---|
EVENT_AFTER_ACTION | yii\base\ActionEvent | 一个事件后执行一个控制器动作。 | yii\base\Module |
EVENT_BEFORE_ACTION | yii\base\ActionEvent | 一个事件之前执行一个控制器动作。 | yii\base\Module |
属性详情
$controllerMap public property
从控制器ID映射到控制器配置。每一个名称-值对将指定一个控制器的配置。一个控制器配置可以是一个字符串或一个数组。如果是前者,字符串应该是控制器的完全限定类名。如果是后者,必须包含一个数组类元素指定控制器的全限定类名,和其余的名称-值对数组是用来初始化相应的控制器性能。例如,
[
'account' => 'app\controllers\UserController',
'article' => [
'class' => 'app\controllers\PostController',
'pageTitle' => 'something new',
],
]
public array $controllerMap = []
$controllerNamespace public property
控制器类的命名空间。这个名称空间将用于负载控制器类通过将控制器类的名字.
如果没有设置,那么将使用controllers
sub-namespace下这个模块的名称空间。例如,如果这个模块的名称空间是foo\bar
,,然后默认控制器名称空间将foo\bar\controllers
.
参见指南部分半自动的定义名称空间和更多地了解如何装载类。
public string $controllerNamespace = null
$defaultRoute public property
这个模块的默认路由。默认为违约。子模块ID,控制器的路线可能由ID,ID和/或行动。例如,帮助,post/create
、admin/post/create
.。如果行动ID不是给定的,它将默认值指定yii\base\Controller::$defaultAction.
public string $defaultRoute = 'default'
$id public property
一个ID,惟一地标识此模块等模块有相同的父母
$layout public property
布局应该申请的观点在这个模块。这是指一个视图名相对\yii\base\layoutPath.基地。如果没有设置,这意味着布局的价值将父模块。如果这是假的,在这个模块布局将被禁用。
public string|boolean $layout = null
$module public property
这个模块的父模块。空如果这个模块没有父母.
public yii\base\Module $module = null
$params public property
Custom module parameters (name => value).
方法详情
__construct() public 方法
Constructor.
public void __construct ( $id, $parent = null, $config = [] ) | ||
$id | string | 这个模块的ID。 |
$parent | yii\base\Module | 父模块(如果有的话)。 |
$config | array | 名称-值对将用于初始化对象的属性 |
afterAction() public 方法
调用该方法之后执行一个动作在这个模块
该方法将触发EVENT_AFTER_ACTION事件。该方法的返回值将被用作操作的返回值.
如果你重写此方法,您的代码应该像下面这样:
public function afterAction($action, $result)
{
$result = parent::afterAction($action, $result);
// your custom code here
return $result;
}
public mixed afterAction ( $action, $result ) | ||
$action | yii\base\Action | 执行的行动。 |
$result | mixed | 操作返回结果。 |
return | mixed | 处理行动的结果. |
---|
beforeAction() public 方法
这个方法被调用之前执行一个动作在这个模块.
该方法将触发EVENT_BEFORE_ACTION事件。方法的返回值将决定行为应该继续运行。
行动不应该运行的,请求应beforeAction代码的内部处理提供必要的输出或重定向请求。否则响应将是空的。
如果你重写此方法,您的代码应该类似于下面的:
public function beforeAction($action)
{
if (!parent::beforeAction($action)) {
return false;
}
// your custom code here
return true; // or false to not run the action
}
public boolean beforeAction ( $action ) | ||
$action | yii\base\Action | The action to be executed. |
return | boolean | Whether the action should continue to be executed. |
---|
createController() public 方法
创建一个控制器实例基于给定的路线。
路线应该是相对于这个模块。该方法实现了以下算法解决给定的路线:
- 如果路径是空的,使用 $defaultRoute;
- 如果第一段的路线是一个有效的模块中声明的ID作为 \yii\base\modules,调用模块的
createController()
与其他路线的一部分 - 如果第一段的路由发现$controllerMap,创建一个控制器基于相应的配置中发现$controllerMap;
- 给定的路线是在美国广播公司(abc)的格式/ def / xyz。试着abc \ DefController或abc \ def \ XyzController类控制器名称空间内。
如果上述步骤解析到一个控制器,它返回与其余部分的路线将被视为行动ID。否则,将返回false。
public array|boolean createController ( $route ) | ||
$route | string | 路线组成模块,控制器和操作id. |
return | array|boolean | 如果控制器创建成功,它将返回与所请求的操作ID,否则将返回false。 |
---|---|---|
throws | yii\base\InvalidConfigException | 如果控制器类及其文件不匹配。 |
createControllerByID() public 方法
创建一个控制器基于给定控制器ID.
相对于这个模块控制器ID。控制器类应该是名称空间 $controllerNamespace.
注意,这个方法不会检查\yii\base\modules or $controllerMap.
public yii\base\Controller createControllerByID ( $id ) | ||
$id | string | 控制器ID。 |
return | yii\base\Controller | 新创建的控制器实例,或null如果控制器ID无效 |
---|---|---|
throws | yii\base\InvalidConfigException | 如果控制器类和它的文件名不匹配。这只是在调试模式下时抛出异常。 |
defaultVersion() protected 方法 (可用自版本 2.0.11)
返回默认模块版本。
子类可以重写此方法提供更具体的版本检测.
protected string defaultVersion ( ) | ||
return | string | 这个模块的版本. |
---|
getBasePath() public 方法
返回模块的根目录。
它包含模块类文件的默认目录。
public string getBasePath ( ) | ||
return | string | 的根目录模块. |
---|
getControllerPath() public 方法
返回目录包含控制器类根据 $controllerNamespace.
请注意,为了使这个方法返回一个值,您必须定义一个别名$controllerNamespace.的根名称空间。
public string getControllerPath ( ) | ||
return | string | 该目录包含控制器类。 |
---|---|---|
throws | yii\base\InvalidParamException | 如果没有为 $controllerNamespace的根名称空间定义的别名。 |
getInstance() public static 方法
返回当前请求的这个模块类的实例。
如果模块类是目前没有要求,将返回null。这种方法提供了,这样你从任何地方访问模块实例内的模块.
public static static|null getInstance ( ) | ||
return | static|null | 当前请求这个模块类的实例,或者零如果没有请求模块类。 |
---|
getLayoutPath() public 方法
返回包含此模块布局视图文件的目录。
public string getLayoutPath ( ) | ||
return | string | 布局文件的根目录。默认为“基础 "\yii\base\viewPath/layouts". |
---|
getModule() public 方法
检索指定的子模块ID。
这种方法支持检索两个子模块和子模块.
参见 hasModule().
public yii\base\Module|null getModule ( $id, $load = true ) | ||
$id | string | 模块ID(区分大小写)。检索子模块,使用ID路径相对于这个模块 (e.g. |
$load | boolean | 是否加载模块如果没有加载。 |
return | yii\base\Module|null | 模块实例,零如果模块不存在 |
---|
getModules() public 方法
Returns the sub-modules in this module.
public array getModules ( $loadedOnly = false ) | ||
$loadedOnly | boolean | 是否返回加载子模块。如果这是错误的,那么将返回所有子模块注册模块,是否加载。加载模块会返回对象,而卸载模块配置阵列。 |
return | array | 的模块,通过其id(索引). |
---|
getUniqueId() public 方法
返回一个ID,惟一地标识此模块在所有模块在当前应用程序
请注意,如果该模块是一个应用程序,将返回一个空字符串.
public string getUniqueId ( ) | ||
return | string | 模块的惟一ID |
---|
getVersion() public 方法 (可用自版本 2.0.11)
返回当前模块版本
如果没有显式地设置版本,defaultVersion()方法将用于确定其价值。
public string getVersion ( ) | ||
return | string | 这个模块的版本. |
---|
getViewPath() public 方法
返回包含此模块的视图文件的目录
public string getViewPath ( ) | ||
return | string | 视图文件的根目录。默认为“基础\ "\yii\base\basePath/views". |
---|
hasModule() public 方法
检查是否指定的子模块ID存在。
这种方法支持检查存在的两个孩子,大孩子模块
public boolean hasModule ( $id ) | ||
$id | string | 为大孩子模块ID。模块,使用ID路径相对于这个模块(例如admin /内容)。 |
return | boolean | 是否存在指定的模块。加载和卸载模块。 |
---|
init() public 方法
初始化模块
调用此方法后,模块与给定属性值创建并初始化配置。默认实现将初始化$controllerNamespace如果不设置。
如果你重写这个方法,请确保你调用父实现.
public void init ( ) |
runAction() public 方法
运行一个控制器操作指定的路线
该方法解析指定的路线和创建相应的子模块(s),控制器和操作实例。然后调用yii\base\Controller::runAction()与给定的运行操作参数。如果路径为空,该方法将使用 $defaultRoute.
public mixed runAction ( $route, $params = [] ) | ||
$route | string | 指定了行动的路线。 |
$params | array | 参数被传递到行动 |
return | mixed | 行动的结果。 |
---|---|---|
throws | yii\base\InvalidRouteException | 如果所请求的路径不能被解析成一个行动成功. |
setAliases() public 方法
定义了路径别名。
这个方法调用Yii:setAlias()注册路径别名。这种方法提供,这样您就可以定义路径别名配置模块。
public void setAliases ( $aliases ) | ||
$aliases | array | 路径别名定义列表。数组的键是别名(必须从@)和数组值对应的路径或别名。例如, |
setBasePath() public 方法
设置模块的根目录.
这种方法只能在调用构造函数的开始.
public void setBasePath ( $path ) | ||
$path | string | 的根目录模块。这可以是一个目录名称或路径别名. |
throws | yii\base\InvalidParamException | 如果目录不存在. |
---|
setInstance() public static 方法
设置当前请求这个模块类的实例。
public static void setInstance ( $instance ) | ||
$instance | yii\base\Module|null | 当前请求的这个模块类的实例。如果是null,调用类的实例将被删除,如果任何。 |
setLayoutPath() public 方法
集包含布局文件的目录。
public void setLayoutPath ( $path ) | ||
$path | string | 布局文件的根目录或路径别名。 |
throws | yii\base\InvalidParamException | 如果目录是无效的 |
---|
setModule() public 方法
添加一个sub-module这个模块.
public void setModule ( $id, $module ) | ||
$id | string | 模块ID |
$module | yii\base\Module|array|null | sub-module被添加到这个模块。这可能是下列之一:
|
setModules() public 方法
注册子模块在当前模块。
每个sub-module应该指定为一个名称-值对,,名字是指模块和价值模块的ID或配置阵列,可用于创建模块。在后一种情况下,Yii:createObject()将用于创建的模块
如果一个新的sub-module相同的ID作为一个现有的,现有一个默默地将被重写。
下面是一个示例注册两个子模块:
[
'comment' => [
'class' => 'app\modules\comment\CommentModule',
'db' => 'db',
],
'booking' => ['class' => 'app\modules\booking\BookingModule'],
]
public void setModules ( $modules ) | ||
$modules | array | 模块单元(id = >配置然而论坛). |
setVersion() public 方法 (可用自版本 2.0.11)
设置当前模块版本。
public void setVersion ( $version ) | ||
$version | string|callable | 这个模块的版本。可以指定一个PHP版本回调,可以接受模块实例作为参数,应该返回实际的版本。例如: |
setViewPath() public 方法
集包含视图的目录文件.
public void setViewPath ( $path ) | ||
$path | string | 视图文件的根目录。 |
throws | yii\base\InvalidParamException | 如果目录是无效的。 |
---|
事件详情
EVENT_AFTER_ACTION yii\base\ActionEvent基础类型的事件 一个事件后执行一个控制器动作。
EVENT_BEFORE_ACTION yii\base\ActionEvent基础类型的事件
一个事件之前执行一个控制器动作。你可以设置yii \基地\ ActionEvent::$ isValid是错误的取消操作执行。