开发者

资讯中心帮助中心开发者

URL生成规则

发布时间:2024-09-06 11:40 阅读:67

服务端生成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 助手函数不支持跨应用适用路由规则。重写后支持跨应用路由规则生成

国家级高新技术企业国家级高新技术企业科技型中小企业科技型中小企业