### 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 助手函數是在控制器中的應用,如需在視圖模板中使用,使用方法相同。