# URL生成
## URL 生成
用于生成URL链接地址,系统提供的助手函数为`url`。
**函数说明**
```
<pre class="calibre16">```
<span class="token5">/**
* Url生成
* @param string $url 路由地址
* @param array $vars 数组变量
* @param bool|string $suffix 生成的URL后缀
,例如html,默认是html
* @param bool|string $domain 域名
* @return UrlBuild
*/</span>
<span class="token2">function</span> <span class="token6">url</span><span class="token1">(</span>string $url <span class="token">=</span> <span class="token4">''</span><span class="token1">,</span> array $vars <span class="token">=</span> <span class="token1">[</span><span class="token1">]</span><span class="token1">,</span> $suffix <span class="token">=</span> <span class="token3">true</span><span class="token1">,</span> $domain <span class="token">=</span> <span class="token3">false</span><span class="token1">)</span><span class="token1">:</span> UrlBuild
```
```
模板使用方式
```
<pre class="calibre16">```
<span class="token1">{</span><span class="token1">:</span><span class="token6">url</span><span class="token1">(</span><span class="token4">'/Index/demo'</span><span class="token1">)</span><span class="token1">}</span>
```
```
## 入口文件说明
url 生成跟入口文件配置挂钩,这里为了兼容不支持伪静态的默认是显示入口文件的,如果你配置了伪静态是可以选择隐藏的,这样生成的url地址不会带入口文件。
![](https://img.kancloud.cn/ee/29/ee29b530db8c768b4f7e9f1d62369812_652x395.png)
## 不使用路由方式生成
### 1. 应用内访问
带有参数形式生成,参数1的格式为:`url('控制器/操作方法')`
```
<pre class="calibre16">```
<span class="token5">// url生成,默认是带有html后缀的,url方法返回的是对象可方便额外的操作,使用(string)转字符串</span>
$url <span class="token">=</span> <span class="token1">(</span>string<span class="token1">)</span> <span class="token6">url</span><span class="token1">(</span><span class="token4">'/index/demo'</span><span class="token1">,</span><span class="token1">[</span><span class="token4">'aaa'</span><span class="token">=</span><span class="token">></span><span class="token3">1</span><span class="token1">]</span><span class="token1">)</span><span class="token1">;</span>
<span class="token6">dd</span><span class="token1">(</span>$url<span class="token1">)</span><span class="token1">;</span> <span class="token5">// 输出结果</span>
```
```
前台入口文件隐藏后效果,如果未配置隐藏入口文件,则前面会有`/index.php/`,以下示例默认是配置了入口文件隐藏。
```
<pre class="calibre16">```
<span class="token">/</span>index<span class="token">/</span>demo<span class="token1">.</span>html<span class="token">?</span>aaa<span class="token">=</span><span class="token3">1</span>
```
```
生成带有域名的链接地址,第四个参数为`true`表示生成的链接地址加域名
```
<pre class="calibre16">```
<span class="token5">// 自动生成域名、加后缀</span>
$url <span class="token">=</span> <span class="token1">(</span>string<span class="token1">)</span><span class="token6">url</span><span class="token1">(</span><span class="token4">'/demo/index'</span><span class="token1">,</span><span class="token1">[</span><span class="token4">'aaa'</span><span class="token">=</span><span class="token">></span><span class="token3">1</span><span class="token1">]</span><span class="token1">,</span><span class="token4">'html'</span><span class="token1">,</span><span class="token3">true</span><span class="token1">)</span><span class="token1">;</span>
<span class="token5">// 结果</span>
http<span class="token1">:</span><span class="token">/</span><span class="token">/</span>xxx<span class="token1">.</span>cms<span class="token1">.</span>com<span class="token">/</span>demo<span class="token">/</span>index<span class="token1">.</span>html<span class="token">?</span>aaa<span class="token">=</span><span class="token3">1</span>
```
```
生成锚点示例,生成锚点注意前面不需要加`/`,如下
```
<pre class="calibre16">```
<span class="token5">// 锚点跟子域名同时存在时需要锚点在前,域名在后</span>
$url <span class="token">=</span> <span class="token1">(</span>string<span class="token1">)</span><span class="token6">url</span><span class="token1">(</span><span class="token4">'index/demo#ddd'</span><span class="token1">,</span><span class="token1">[</span><span class="token4">'aaa'</span><span class="token">=</span><span class="token">></span><span class="token3">1</span><span class="token1">,</span><span class="token4">'b'</span><span class="token">=</span><span class="token">></span><span class="token4">'sfsfs'</span><span class="token1">]</span><span class="token1">,</span><span class="token4">''</span><span class="token1">,</span><span class="token3">true</span><span class="token1">)</span><span class="token1">;</span>
<span class="token5">// 结果</span>
http<span class="token1">:</span><span class="token">/</span><span class="token">/</span>xxx<span class="token1">.</span>cms<span class="token1">.</span>com<span class="token1">:</span><span class="token3">8080</span><span class="token">/</span>index<span class="token">/</span>demo<span class="token">?</span>aaa<span class="token">=</span><span class="token3">1</span><span class="token">&</span>b<span class="token">=</span>sfsfs#ddd
```
```
### 2. 访问其他应用,域名绑定
域名绑定配置在`config/app.php`中,目前有以下配置,这里配置好后记得在域名提供商做好解析。
```
<pre class="calibre16">```
<span class="token5">// 域名绑定</span>
<span class="token4">'domain_bind'</span> <span class="token">=</span><span class="token">></span> <span class="token1">[</span>
<span class="token4">'api'</span> <span class="token">=</span><span class="token">></span> <span class="token4">'api'</span><span class="token1">,</span>
<span class="token4">'*'</span> <span class="token">=</span><span class="token">></span> <span class="token4">'index'</span><span class="token1">,</span>
<span class="token1">]</span><span class="token1">,</span>
```
```
示例:生成锚点并绑定到`api`域名,通过生成后的链接即可访问到`api`应用。提示:如果入口文件未配置隐藏,那么入口文件还是存在的。
```
<pre class="calibre16">```
<span class="token5">// 生成锚点,并绑定域名</span>
$url <span class="token">=</span> <span class="token1">(</span>string<span class="token1">)</span><span class="token6">url</span><span class="token1">(</span><span class="token4">'index/demo#ddd@api'</span><span class="token1">,</span><span class="token1">[</span><span class="token4">'aaa'</span><span class="token">=</span><span class="token">></span><span class="token3">1</span><span class="token1">,</span><span class="token4">'b'</span><span class="token">=</span><span class="token">></span><span class="token4">'sfsfs'</span><span class="token1">]</span><span class="token1">)</span><span class="token1">;</span>
<span class="token5">// 隐藏入口文件结果</span>
http<span class="token1">:</span><span class="token">/</span><span class="token">/</span>api<span class="token1">.</span>cms<span class="token1">.</span>com<span class="token">/</span>index<span class="token">/</span>demo<span class="token1">.</span>html<span class="token">?</span>aaa<span class="token">=</span><span class="token3">1</span><span class="token">&</span>b<span class="token">=</span>sfsfs#ddd
<span class="token5">// 未隐藏结果</span>
http<span class="token1">:</span><span class="token">/</span><span class="token">/</span>api<span class="token1">.</span>cms<span class="token1">.</span>com<span class="token">/</span>index<span class="token1">.</span>php<span class="token">/</span>index<span class="token">/</span>demo<span class="token1">.</span>html<span class="token">?</span>aaa<span class="token">=</span><span class="token3">1</span><span class="token">&</span>b<span class="token">=</span>sfsfs#ddd
```
```
示例2:也可使用url方法的参数4来实现,如下
```
<pre class="calibre16">```
<span class="token5">// 指定子域名为api</span>
$url <span class="token">=</span> <span class="token1">(</span>string<span class="token1">)</span><span class="token6">url</span><span class="token1">(</span><span class="token4">'/index/demo'</span><span class="token1">,</span><span class="token1">[</span><span class="token4">'aaa'</span><span class="token">=</span><span class="token">></span><span class="token3">1</span><span class="token1">]</span><span class="token1">,</span><span class="token4">'html'</span><span class="token1">,</span><span class="token4">'api'</span><span class="token1">)</span><span class="token1">;</span>
<span class="token5">// 也支持完整域名,如果不是80端口需要域名+端口</span>
$url <span class="token">=</span> <span class="token1">(</span>string<span class="token1">)</span><span class="token6">url</span><span class="token1">(</span><span class="token4">'/index/demo'</span><span class="token1">,</span><span class="token1">[</span><span class="token4">'aaa'</span><span class="token">=</span><span class="token">></span><span class="token3">1</span><span class="token1">]</span><span class="token1">,</span><span class="token4">'html'</span><span class="token1">,</span><span class="token4">'local.cms.com:8080'</span><span class="token1">)</span><span class="token1">;</span>
```
```
### 3. 访问其他应用,入口文件
如果不通过域名解析按入口文件来访问,需要生成其他应用链接时可以通过以下写法实现
```
<pre class="calibre16">```
$url <span class="token">=</span> <span class="token1">(</span>string<span class="token1">)</span><span class="token6">url</span><span class="token1">(</span><span class="token4">'api:/index/demo'</span><span class="token1">,</span><span class="token1">[</span><span class="token4">'aaa'</span><span class="token">=</span><span class="token">></span><span class="token3">1</span><span class="token1">,</span><span class="token4">'b'</span><span class="token">=</span><span class="token">></span><span class="token4">'sfsfs'</span><span class="token1">]</span><span class="token1">,</span><span class="token4">''</span><span class="token1">,</span><span class="token3">true</span><span class="token1">)</span><span class="token1">;</span>
```
```
生成结果
```
<pre class="calibre16">```
http<span class="token1">:</span><span class="token">/</span><span class="token">/</span>local<span class="token1">.</span>cms<span class="token1">.</span>com<span class="token">/</span>api<span class="token1">.</span>php<span class="token">/</span>index<span class="token">/</span>demo<span class="token">?</span>aaa<span class="token">=</span><span class="token3">1</span><span class="token">&</span>b<span class="token">=</span>sfsfs
```
```
## 使用路由方式生成
了解这里前先了解路由定义,假设`index`应用配置了以下路由
```
<pre class="calibre16">```
Route<span class="token1">:</span><span class="token1">:</span><span class="token6">rule</span><span class="token1">(</span><span class="token4">'/demo'</span><span class="token1">,</span><span class="token4">'/index/demo'</span><span class="token1">)</span><span class="token1">;</span>
```
```
根据路由生成地址写法如下,参数1的地址需要跟上面的参数2保持一致。
```
<pre class="calibre16">```
$url <span class="token">=</span> <span class="token1">(</span>string<span class="token1">)</span><span class="token6">url</span><span class="token1">(</span><span class="token4">'/index/demo'</span><span class="token1">,</span><span class="token1">[</span><span class="token4">'aaa'</span><span class="token">=</span><span class="token">></span><span class="token3">1</span><span class="token1">]</span><span class="token1">)</span><span class="token1">;</span>
```
```
结果
```
<pre class="calibre16">```
<span class="token">/</span>demo<span class="token1">.</span>html<span class="token">?</span>aaa<span class="token">=</span><span class="token3">1</span>
```
```
使用域名
```
<pre class="calibre20">```
$url <span class="token">=</span> <span class="token1">(</span>string<span class="token1">)</span><span class="token6">url</span><span class="token1">(</span><span class="token4">'/index/demo'</span><span class="token1">,</span><span class="token1">[</span><span class="token4">'aaa'</span><span class="token">=</span><span class="token">></span><span class="token3">1</span><span class="token1">]</span><span class="token1">,</span><span class="token4">''</span><span class="token1">,</span><span class="token3">true</span><span class="token1">)</span><span class="token1">;</span>
```
```
- 简介
- 下载与安装配置
- 下载
- 虚拟主机安装
- 百度云虚拟主机
- 创业云虚拟主机
- Linux下宝塔安装
- 宝塔一键部署
- Windows下宝塔安装
- phpEnv下安装
- phpStudy下安装
- 伪静态(url重写)
- 安装系统
- 调试模式与env文件
- 重新安装与安装文件说明
- 后台使用帮助
- 后台入口文件
- 首页面板
- 配置中心
- 站点配置
- SEO设置
- SEO设置-静态生成
- 文档属性
- 站点模块
- V2.2.2版本 -
- V2.2.3版本 +
- 模型管理
- 栏目管理
- 字段类型与组件
- 前言
- 前端组件
- 验证规则
- text 单行文本
- textarea 多行文本
- radio 单选
- checkbox 复选
- select 下拉列表
- selects下拉列表(多)
- selectpage 动态下拉
- editor编辑器
- image图片
- images图片(多)
- number数字
- date日期
- datetime日期和时间
- downfile文件上传
- downfiles文件上传(多)
- array 数组(键值对)
- 内容管理
- 自定义URL
- 多语言
- 界面多语言
- 内容多语言
- 多语言URL地址
- 附件管理
- 应用中心
- 标签语法
- 标签使用必读
- 列表标签
- content 内容列表标签
- contentpage 内容列表分页
- wfpage 瀑布流分页
- filter 筛选标签
- order 排序标签
- 内容标签
- guestbook 留言(表单)标签(废弃)
- form 表单标签
- pre 上一篇标签
- next 下一篇标签
- prenext 上一篇下一篇(高级)标签
- fileinfo 获取附件信息(文件下载)
- 内容分页
- raw 格式化编辑器文本(即将废弃)
- 全局标签
- seo 标签
- channel 栏目标签
- arcone 获取单条文档
- breadcrumb 面包屑导航标签
- adv 站点模块标签
- date 日期格式化标签
- substr字符(标题)截取标签
- volist 循环标签
- language 获取语言列表标签
- query 查询数据库内容
- include 导入模板文件标签
- 原生PHP与php标签
- map生成位置地图
- thumb 生成缩略图
- addons 插件检测
- 标签管理
- taglist标签(获取标签列表)
- tagarclist根据标签获取文章内容列表
- 导入标签
- 模板开发
- 1. 创建模板
- 2. 模板目录结构
- 3. 模板描述文件(重要) info.ini
- 4. 变量输出格式
- 4. 模板变量
- 5. 获取站点配置
- 6. 模板界面多语言
- 7. 模板静态目录及调用静态文件
- 8. 模板定义插件事件
- 9. 模板搜索页
- 10. 模板配置JSON
- 11. 导入演示数据
- 12. 卸载删除演示数据
- 13. 模板文件打包
- 14. 整站源码打包
- 插件开发
- 1. 创建插件
- 2. 目录结构
- 3. 插件名称类
- 4. 插件信息(info.ini)
- 5. 插件事件
- 6. 配置文件
- 7. install 安装目录
- 8. 创建菜单
- 9. 插件控制器
- 10. 插件视图
- 10-1 插件主题化
- 11. 插件模型
- 12. 模型事件
- 13. 插件内置函数
- 13-1 插件函数库
- 14. 插件多语言
- 15. 插件中间件
- 16. 插件路由
- 17. 插件验证器
- 18. 标签库
- 19. 第三方类库
- 20. 数据库文件导入
- 插件打包
- 后台前端使用帮助
- 二次开发帮助(更新中)
- 后台前端开发帮助
- 路由(链接地址、访问规则)
- URL访问
- 路由定义
- URL生成
- 附录
- 数据字典
- 助手函数库