### Url生成
*****
url生成,可以在视图中引用,也可以在控制器中使用,它是一个助手函数,意在快速构建标准连接。
语法:
`url(路径);`
`url(路径,参数);`
* **路径** "模块/控制器/方法" 可以简写,只填写 "控制器/方法" 或 "方法" 。
* **参数** " 可以为空不传,如有参数必须是**数组**形式。
* 另外 **路径** 又可以分为 **相对路径** 和 **指定路径** 。相对路径即在填写路径时路径左侧没有 "/" 斜线,系统在生成url时会自动根据当前的位置进行"模块/控制器"补全。 指定路径即系统不会补全。
例:
`url('index'); //相对路径`
`url('index/info'); //相对路径`
`url('index/info/page');`
`url('/index'); //指定路径`
`url('/index/info'); //指定路径`
也可以传入参数:
`url('index',['id'=>5]);`
`url('index/info',['id'=>5]);`
`url('index/info/page',['id'=>5,'fid'=>7]);`
`url('/index',['id'=>5]);`
`url('/index/info',['id'=>5]);`
* [ ] url生成模式分为传统模式和优化模式,有 config 中 url_common_param 控制。
```
//生成url模式 默认:false 优化模式,true 传统模式
'url_common_param' => false,
```
例如:当我们设置为 传统模式 true 时
```
<php
namespace app\admin\controller;
use tian\Controller;
class index extends Controller
{
public function index()
{
$str = url('info',['id'=>10]); //相对路径
$strs = url('/info',['id'=>10]); //指定路径
$strss = url('page/info',['id'=>10]);
$strsss = url('/about/info',['id'=>10]);
echo $str;
echo "<br>";
echo $strs;
echo "<br>";
echo $strss;
echo "<br>";
echo $strsss;
}
}
```
输出:
```
/admin/index/info.html?id=10 //系统补全 '模块/控制器' admin/index
/info.html?id=10
/admin/page/info.html?id=10 //系统补全 '模块' admin
/about/info.html?id=10
```
例如:当我们设置为 优化模式 false 时,
上例输出:
```
/admin/index/info/id/10.html
/info/id/10.html
/admin/page/info/id/10.html
/about/info/id/10.html
```
有一种特殊情况,在 **优化模式下 且 指定路径模式,url生成自动遵循路由设定,如未匹配到路由规则,则参数串按传入数组键值对生成**
例:
在config/route.php中配置路由规则:
```
<?php
use tian\Route;
Route::get('info/:id', 'index/news/info');
```
控制器中:
```
namespace app\index\controller;
use tian\Controller;
class News extends Controller
{
public function index()
{
$str = url('/info',['id'=>10]);
echo $str; //输出:/info/10.html
}
public function info()
{
$id = input('id);
echo $id; //10
}
}
```
以上 url 助手函数是在控制器中的应用,如需在视图模板中使用,使用方法相同。