路由增加角色参数 增加getRole方法获取路由的角色

This commit is contained in:
thinkphp
2016-10-28 14:58:25 +08:00
parent e2de014dd1
commit dba952b608

View File

@@ -234,9 +234,10 @@ class Route
* @param string $type 请求类型 * @param string $type 请求类型
* @param array $option 路由参数 * @param array $option 路由参数
* @param array $pattern 变量规则 * @param array $pattern 变量规则
* @param mixed $role 角色信息
* @return void * @return void
*/ */
public static function rule($rule, $route = '', $type = '*', $option = [], $pattern = []) public static function rule($rule, $route = '', $type = '*', $option = [], $pattern = [], $role = null)
{ {
$group = self::getGroup('name'); $group = self::getGroup('name');
if (!is_null($group)) { if (!is_null($group)) {
@@ -260,12 +261,16 @@ class Route
$route = $val[0]; $route = $val[0];
$option1 = array_merge($option, $val[1]); $option1 = array_merge($option, $val[1]);
$pattern1 = array_merge($pattern, isset($val[2]) ? $val[2] : []); $pattern1 = array_merge($pattern, isset($val[2]) ? $val[2] : []);
if (isset($val[3])) {
self::setRole($key, $val[3]);
}
} else { } else {
$route = $val; $route = $val;
} }
self::setRule($key, $route, $type, isset($option1) ? $option1 : $option, isset($pattern1) ? $pattern1 : $pattern, $group); self::setRule($key, $route, $type, isset($option1) ? $option1 : $option, isset($pattern1) ? $pattern1 : $pattern, $group);
} }
} else { } else {
self::setRole($rule, $role);
self::setRule($rule, $route, $type, $option, $pattern, $group); self::setRule($rule, $route, $type, $option, $pattern, $group);
} }
@@ -346,12 +351,15 @@ class Route
/** /**
* 设置当前执行的参数信息 * 设置当前执行的参数信息
* @access public * @access public
* @param array $options 参数信息 * @param string $name 分组名或者路由规则
* @param mixed $role 角色信息
* @return mixed * @return mixed
*/ */
protected static function setOption($options = []) protected static function setRole($name, $role)
{ {
self::$option[] = $options; if ($role) {
self::$role[$name] = $role;
}
} }
/** /**
@@ -359,9 +367,9 @@ class Route
* @access public * @access public
* @return array * @return array
*/ */
public static function getOption() public static function getRole()
{ {
return self::$option; return self::$role;
} }
/** /**
@@ -401,9 +409,10 @@ class Route
* @param array|\Closure $routes 路由地址 * @param array|\Closure $routes 路由地址
* @param array $option 路由参数 * @param array $option 路由参数
* @param array $pattern 变量规则 * @param array $pattern 变量规则
* @param mixed $role 角色信息
* @return void * @return void
*/ */
public static function group($name, $routes, $option = [], $pattern = []) public static function group($name, $routes, $option = [], $pattern = [], $role = null)
{ {
if (is_array($name)) { if (is_array($name)) {
$option = $name; $option = $name;
@@ -427,6 +436,7 @@ class Route
self::$rules['*'][$name]['option'] = $option; self::$rules['*'][$name]['option'] = $option;
self::$rules['*'][$name]['pattern'] = $pattern; self::$rules['*'][$name]['pattern'] = $pattern;
} }
self::setRole($name, $role);
} else { } else {
$item = []; $item = [];
foreach ($routes as $key => $val) { foreach ($routes as $key => $val) {
@@ -437,6 +447,9 @@ class Route
$route = $val[0]; $route = $val[0];
$option1 = array_merge($option, isset($val[1]) ? $val[1] : []); $option1 = array_merge($option, isset($val[1]) ? $val[1] : []);
$pattern1 = array_merge($pattern, isset($val[2]) ? $val[2] : []); $pattern1 = array_merge($pattern, isset($val[2]) ? $val[2] : []);
if (isset($val[3])) {
self::setRole($name, $val[3]);
}
} else { } else {
$route = $val; $route = $val;
} }
@@ -474,7 +487,7 @@ class Route
self::setGroup($currentGroup, $currentOption, $currentPattern); self::setGroup($currentGroup, $currentOption, $currentPattern);
} else { } else {
// 批量注册路由 // 批量注册路由
self::rule($routes, '', '*', $option, $pattern); self::rule($routes, '', '*', $option, $pattern, $role);
} }
} }
@@ -858,7 +871,6 @@ class Route
$rule = self::getRouteExpress($item); $rule = self::getRouteExpress($item);
} }
if (!empty($rule['route']) && self::checkOption($rule['option'], $request)) { if (!empty($rule['route']) && self::checkOption($rule['option'], $request)) {
self::setOption($rule['option']);
return self::parseRule($item, $rule['route'], $url, $rule['option']); return self::parseRule($item, $rule['route'], $url, $rule['option']);
} }
} }
@@ -922,7 +934,7 @@ class Route
if (is_string($str) && $str && 0 !== strpos(str_replace('|', '/', $url), $str)) { if (is_string($str) && $str && 0 !== strpos(str_replace('|', '/', $url), $str)) {
continue; continue;
} }
self::setOption($option);
$result = self::checkRoute($request, $rule, $url, $depr, $key, $option); $result = self::checkRoute($request, $rule, $url, $depr, $key, $option);
if (false !== $result) { if (false !== $result) {
return $result; return $result;
@@ -938,7 +950,6 @@ class Route
$rule = $group . ($rule ? '/' . ltrim($rule, '/') : ''); $rule = $group . ($rule ? '/' . ltrim($rule, '/') : '');
} }
self::setOption($option);
if (isset($options['bind_model']) && isset($option['bind_model'])) { if (isset($options['bind_model']) && isset($option['bind_model'])) {
$option['bind_model'] = array_merge($options['bind_model'], $option['bind_model']); $option['bind_model'] = array_merge($options['bind_model'], $option['bind_model']);
} }