Class yii\rest\UrlRule

继承yii\rest\UrlRule » yii\web\CompositeUrlRule » yii\base\BaseObject
实现yii\base\Configurable, yii\web\UrlRuleInterface
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/rest/UrlRule.php

提供 UrlRule 可以简化 RESTful API 支持的 URL 规则的创建.

UrlRule 的最简单用法是在应用程序配置种声明如下规则:

[
    'class' => 'yii\rest\UrlRule',
    'controller' => 'user',
]

上面的代码将创建一整套支持以下 RESTful API 端点的 URL 规则:

  • 'PUT,PATCH users/<id>' => 'user/update': 更新用户
  • 'DELETE users/<id>' => 'user/delete': 删除用户
  • 'GET,HEAD users/<id>' => 'user/view': 返回用户的详细信息/概述/选项
  • 'POST users' => 'user/create': 创建新用户
  • 'GET,HEAD users' => 'user/index': 返回用户的列表/概述/选项
  • 'users/<id>' => 'user/options': 处理用户所有未处理的动词
  • 'users' => 'user/options': 处理用户集合的所有未处理动词

你可以配置 $only 和/或 $except 禁用上述某些规则. 你可以配置 $patterns 完全重新定义自己的规则列表. 你可以为 $controller 配置多个控制器 ID, 以为所有这些控制器生成规则. 例如, 以下代码将禁用delete规则并为userpost控制器生成规则:

[
    'class' => 'yii\rest\UrlRule',
    'controller' => ['user', 'post'],
    'except' => ['delete'],
]

属性 $controller 是必须的, 并且应表示一个或多个控制器 ID. 如果控制器在模块内, 则每个控制器 ID 均应以模块 ID 开头. 模式种使用的控制器 ID 将自动进行复数处理(eg. 如上例所示, user变成users).

有关 UrlRule 的更多详细信息和用法信息, 请参阅 guide article on rest routing.

公共属性

隐藏继承的属性

属性类型描述定义在
$controller string|array 此复合规则中的规则正在处理的控制器 ID(eg. yii\rest\UrlRule
$createUrlStatus null|integer 上一次 createUrl() 调用之后 URL 创建的状态. 如果规则未提供有关创建状态的信息, 则未null. 该属性是只读的. yii\web\CompositeUrlRule
$except array 应排除的动作列表. yii\rest\UrlRule
$extraPatterns array 除了 $patterns 中列出的模式以外, 还用于支持其它动作的模式. yii\rest\UrlRule
$only array 可接受动作的列表. yii\rest\UrlRule
$patterns array 可能的模式列表以及用于创建 URL 规则的相应动作. yii\rest\UrlRule
$pluralize boolean 是否自动使控制器的 URL 名称复数. yii\rest\UrlRule
$prefix string 所有模式共享的通用前缀字符串. yii\rest\UrlRule
$ruleConfig array 创建此规则包含的每个 URL 规则的默认配置. yii\rest\UrlRule
$suffix string 为每个生成的规则分配给 yii\web\UrlRule::$suffix 的后缀. yii\rest\UrlRule
$tokens array 每个模式应替换的令牌列表. yii\rest\UrlRule

受保护的属性

隐藏继承的属性

属性类型描述定义在
$createStatus integer|null 上一次 createUrl() 调用之后 URL 创建的状态. yii\web\CompositeUrlRule
$rules yii\web\UrlRuleInterface[] 该复合规则中包含的 URL 规则. yii\web\CompositeUrlRule

公共方法

隐藏继承的方法

方法描述定义在
__call() 调用不是类方法的已命名方法. yii\base\BaseObject
__construct() 构造函数. yii\base\BaseObject
__get() 返回对象属性的值. yii\base\BaseObject
__isset() 检查属性是否已设置, 即已定义且不为null. yii\base\BaseObject
__set() 设置对象属性的值. yii\base\BaseObject
__unset() 将对象属性设置为null. yii\base\BaseObject
canGetProperty() 返回一个值, 指示属性是否可读. yii\base\BaseObject
canSetProperty() 返回一个值, 指示属性是否可写. yii\base\BaseObject
className() 返回此类的完全限定名称. yii\base\BaseObject
createUrl() 根据给定的路由和参数创建一个 URL. yii\rest\UrlRule
getCreateUrlStatus() 返回上一次 createUrl() 调用之后 URL 创建的状态. yii\web\CompositeUrlRule
hasMethod() 返回一个值, 指示方法是否已定义. yii\base\BaseObject
hasProperty() 返回一个值, 指示属性是否已定义. yii\base\BaseObject
init() 初始化对象. yii\rest\UrlRule
parseRequest() 解析给定的请求并返回相应的路由和参数. yii\rest\UrlRule

受保护的方法

隐藏继承的方法

方法描述定义在
createRule() 使用给定的模式和动作创建 URL 规则. yii\rest\UrlRule
createRules() 创建应包含在此复合规则中的 URL 规则. yii\rest\UrlRule
iterateRules() 遍历指定的规则, 并为每个规则调用 createUrl(). yii\web\CompositeUrlRule

属性详情

$controller public 属性

此复合规则中的规则正在处理的控制器 ID(eg. user, post-comment). 如果控制器在module(模块)内(eg. admin/user), 则应在控制器 ID 前面加上模块 ID.

默认情况下, 将控制器 ID 放入生成的规则的模式种时, 它将自动进行复数形式. 如果要明确指定控制器 ID 在模式种的显示方式, 则可以使用数组, 其中阵列键作为模式种的控制器 ID, 而数组值则是实际的控制器 ID. 例如: ['u' => 'user'].

你也可以将多个控制器 ID 作为数组传递. 在这种情况下, 此复合规则将为每个指定的控制器生成适用的 URL 规则. 例如: ['user', 'post'].

public string|array $controller null
$except public 属性

应排除的动作列表. 在此数组中找到的任何动作都不会创建其 URL 规则.

参见 $patterns.

public array $except = []
$extraPatterns public 属性

除了 $patterns 中列出的模式以外, 还用于支持其它动作的模式. 键是模式, 值是相应的动作 ID. 这些额外的模式将优先于 $patterns.

public array $extraPatterns = []
$only public 属性

可接受动作的列表. 如果不为空, 则仅此数组中的动作将创建相应的 URL 规则.

参见 $patterns.

public array $only = []
$patterns public 属性

可能的模式列表以及用于创建 URL 规则的相应动作. 键是模式, 值是相应的动作. 模式的格式为Verbs Pattern(动词模式), 其中Verbs(动词)表示由逗号,分隔的HTTP动词列表(无空格). 如果未指定Verbs(动词), 则表示允许所有动词. Pattern(模式)是可选的, 它将以[[prefix]]/[[controller]]/作为前缀, 并且其中的令牌将有 $tokens 替换.

public array $patterns = ['PUT,PATCH {id}' => 'update''DELETE {id}' => 'delete''GET,HEAD {id}' => 'view''POST' => 'create''GET,HEAD' => 'index''{id}' => 'options''' => 'options']
$pluralize public 属性

是否自动使控制器的 URL 名称复数. 如果为true, 则控制器 ID 将以复数形式出现在 URL 中. 例如, user控制器将在 URL 中显示为users.

参见 $controller.

public boolean $pluralize true
$prefix public 属性

所有模式共享的通用前缀字符串.

public string $prefix null
$ruleConfig public 属性

创建此规则包含的每个 URL 规则的默认配置.

public array $ruleConfig = ['class' => 'yii\web\UrlRule']
$suffix public 属性

为每个生成的规则分配给 yii\web\UrlRule::$suffix 的后缀.

public string $suffix null
$tokens public 属性

每个模式应替换的令牌列表. 键是令牌名称, 值是相应的替换.

参见 $patterns.

public array $tokens = ['{id}' => '<id:\\d[\\d,]*>']

方法详情

createRule() protected 方法

使用给定的模式和动作创建 URL 规则.

protected yii\web\UrlRuleInterface createRule ( $pattern, $prefix, $action )
$pattern string
$prefix string
$action string
createRules() protected 方法

创建应包含在此复合规则中的 URL 规则.

protected yii\web\UrlRuleInterface[] createRules ( )
return yii\web\UrlRuleInterface[]

URL 规则.

createUrl() public 方法

根据给定的路由和参数创建一个 URL.

public string|boolean createUrl ( $manager, $route, $params )
$manager yii\web\UrlManager

URL 管理器.

$route string

路由. 它的开头或结尾不应带有斜杠/.

$params array

参数.

return string|boolean

创建的 URL; 如果指定的规则均不能用于创建此 URL, 则返回false.

init() public 方法

初始化对象.

在使用给定的配置初始化对象之后, 在构造函数的末尾调用此方法.

public void init ( )
parseRequest() public 方法

解析给定的请求并返回相应的路由和参数.

public array|boolean parseRequest ( $manager, $request )
$manager yii\web\UrlManager

URL 管理器.

$request yii\web\Request

Request 组件.

return array|boolean

解析结果. 路由和参数以数组形式返回. 如果为false, 则表示该规则不能用于解析此路由信息.