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' => '模板标签错误',
'cache write error' => '缓存写入失败',
'sae mc write error' => 'SAE mc 写入错误',
'route name not exists' => '路由命名标识不存在',
'route name not exists' => '路由标识不存在(或参数不够)',
];

View File

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

View File

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

View File

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