Route类的name方法支持批量设置

This commit is contained in:
thinkphp
2016-08-23 22:17:08 +08:00
parent dda1faaa2e
commit 242c8bf7c6
4 changed files with 16 additions and 14 deletions

View File

@@ -59,5 +59,5 @@ return [
'tag error' => '模板标签错误', 'tag error' => '模板标签错误',
'cache write error' => '缓存写入失败', 'cache write error' => '缓存写入失败',
'sae mc write error' => 'SAE mc 写入错误', 'sae mc write error' => 'SAE mc 写入错误',
'route name not exists' => '路由命名标识不存在', 'route name not exists' => '路由标识不存在(或参数不够)',
]; ];

View File

@@ -138,12 +138,14 @@ class Route
/** /**
* 设置路由绑定 * 设置路由绑定
* @access public * @access public
* @param string $name 路由命名标识 * @param string|array $name 路由命名标识 数组表示批量设置
* @return array * @return array
*/ */
public static function name($name = '') public static function name($name = '')
{ {
if ('' === $name) { if (is_array($name)) {
return self::$name = $name;
} elseif ('' === $name) {
return self::$name; return self::$name;
} else { } else {
return isset(self::$name[$name]) ? self::$name[$name] : null; return isset(self::$name[$name]) ? self::$name[$name] : null;

View File

@@ -22,11 +22,8 @@ class Url
/** /**
* URL生成 支持路由反射 * URL生成 支持路由反射
* @param string $url URL表达式 * @param string $url 路由地址
* 格式:'[模块/控制器/操作]?参数1=值1&参数2=值2...@域名' * @param string|array $vars 参数支持数组和字符串a=val&b=val2... ['a'=>'val1', 'b'=>'val2']
* @控制器/操作?参数1=值1&参数2=值2...
* \\命名空间类\\方法?参数1=值1&参数2=值2...
* @param string|array $vars 传入的参数,支持数组和字符串
* @param string|bool $suffix 伪静态后缀默认为true表示获取配置值 * @param string|bool $suffix 伪静态后缀默认为true表示获取配置值
* @param boolean|string $domain 是否显示域名 或者直接传入域名 * @param boolean|string $domain 是否显示域名 或者直接传入域名
* @return string * @return string
@@ -77,7 +74,7 @@ class Url
} }
} }
if (!empty($rule) && $match = self::getRuleUrl($rule, $vars)) { if (!empty($rule) && $match = self::getRuleUrl($rule, $vars)) {
// 匹配路由命名标识 快速生成 // 匹配路由命名标识
$url = $match[0]; $url = $match[0];
if (!empty($match[1])) { if (!empty($match[1])) {
$domain = $match[1]; $domain = $match[1];
@@ -90,7 +87,7 @@ class Url
parse_str($info['query'], $params); parse_str($info['query'], $params);
$vars = array_merge($params, $vars); $vars = array_merge($params, $vars);
} }
// 路由不存在 直接解析 // 路由标识不存在 直接解析
$url = self::parseUrl($url, $domain); $url = self::parseUrl($url, $domain);
} }
@@ -215,8 +212,7 @@ class Url
} else { } else {
$domain .= strpos($domain, '.') ? '' : strstr($request->host(), '.'); $domain .= strpos($domain, '.') ? '' : strstr($request->host(), '.');
} }
$domain = ($request->isSsl() ? 'https://' : 'http://') . $domain; return ($request->isSsl() ? 'https://' : 'http://') . $domain;
return $domain;
} }
// 解析URL后缀 // 解析URL后缀

View File

@@ -23,6 +23,12 @@ use think\Url;
class urlTest extends \PHPUnit_Framework_TestCase class urlTest extends \PHPUnit_Framework_TestCase
{ {
public function setUp()
{
Route::rules([]);
Route::name([]);
}
public function testBuildModule() public function testBuildModule()
{ {
@@ -70,7 +76,6 @@ class urlTest extends \PHPUnit_Framework_TestCase
public function testBuildNameRoute() public function testBuildNameRoute()
{ {
Route::rules([]);
Route::get(['name', 'blog/:id'], 'index/blog'); Route::get(['name', 'blog/:id'], 'index/blog');
$this->assertEquals([['blog/:id', ['id' => 1], null]], Route::name('name')); $this->assertEquals([['blog/:id', ['id' => 1], null]], Route::name('name'));
Config::set('url_html_suffix', 'shtml'); Config::set('url_html_suffix', 'shtml');
@@ -103,7 +108,6 @@ class urlTest extends \PHPUnit_Framework_TestCase
Config::set('url_domain_deploy', false); Config::set('url_domain_deploy', false);
Config::set('url_common_param', false); Config::set('url_common_param', false);
Url::root('/index.php'); Url::root('/index.php');
Route::rules([]);
Route::get('blog/:id', 'index/blog/read'); Route::get('blog/:id', 'index/blog/read');
Config::set('url_html_suffix', 'shtml'); Config::set('url_html_suffix', 'shtml');
$this->assertEquals('/index.php/blog/10/name/thinkphp.shtml', Url::build('index/blog/read?id=10&name=thinkphp')); $this->assertEquals('/index.php/blog/10/name/thinkphp.shtml', Url::build('index/blog/read?id=10&name=thinkphp'));