服务端生成URL:
//$path 包含应用名在内的完整控制器方法路径
//$param 需要追加到URL里的参数
url($path,$param)
//跨应用生成URL(portal 为应用名)
$url = url('/portal/article/detail',[id=>1])
//应用内生成URL
$url = url('/article/detail',[id=>1])web前端生成URL
{{:url($path,$param)}}
//跨应用生成URL(portal 为应用名)
<a href="{{:url('/portal/article/detail',[id=>1])}}">XX文章标题</a>
//应用内生成URL
<a href="{{:url('/article/detail',[id=>1])}}">XX文章标题</a>URL伪静态:
在当前应用目录下的创建route目录,再该目录下创建任意文件名的文件书写URL重写规则。如在 mall 应用下创建重写规则:
//文件路径 \app\mall\route\route.php
<?php
use think\facade\Route;
//文章内容页路由
Route::rule('goods/<id>', 'Goods/detail')->pattern([
'id' => '[\d]+'
]);特殊URL生成:
个别情况下需要根据URL参数对应到其他特殊静态字符串(如:将 /portal/article/column?id=1 重写为 portal/article/dirname,其中 dirname 是 id为1栏目的特定名称),则需要在 route 文件里对 $backRouteForId 数组进行追加声明 ,如:
<?php
use think\facade\Route;
//文章列表页路由
$backRouteForId['article/column'] = [];
foreach($cats as $id => $dirname){
//定义重写规则
Route::rule($dirname, 'article/column')->ext('html')->append(['id'=>$id]);
//根据ID生成重命名过的静态URL,(用于通过 url 方法反向生成特殊URL)
$backRouteForId['article/column'][$id] = '/portal/'.$dirname.'.html';
}说明:
该 url 方法是重写了tp内置的url 助手函数,原系统内置的 url 助手函数不支持跨应用适用路由规则。重写后支持跨应用路由规则生成

站长教程
国家级高新技术企业
科技型中小企业