為了配合所使用的 URL 模式,我們需要能夠動態的根據當前的 URL 設置生成對應的 URL 地址,為此,QueryPHP 內置提供了 Q::url 方法,用于 URL 的動態生成,可以確保項目在移植過程中不受環境的影響。
Q::url 方法的定義規則如下(方括號內參數根據實際應用決定):
~~~
Q::url('[應用://]控制器/方法?參數1=值1',額外參數,擴展參數);
~~~
如果不定義應用和控制器的話 就表示當前應用和控制器名稱,下面是一些簡單的例子:
~~~
# /index.php/myapp/hello/world/id/5/name/yes.html
\Q::url( 'myapp://hello/world' ,['id'=>5,'name'=>'yes']);
# /index.php/myapp/index/test.html
echo \Q::url( 'myapp://test');
~~~
# 自定義 url
系統支持路由設置,像路由這種可以我們通過自定義 url 來生成地址。
~~~
# /hello-world.html
\Q::url('/hello-world');
# /new-5-tom.html
\Q::url('/new-{id}-{name}', ['id' => 5, 'name' => 'tom']);
~~~
# 強制使用普通 url 模式
在有些業務場景,無論系統設置什么樣的 url 模式都生成普通的 url 地址。
~~~
# /index.php?app=home&c=hello&a=world
\Q::url ( 'hello/world', [ ], [
'normal' => true
] );
~~~
# 是否包含后綴
系統默認開啟后綴,如果存在則會在尾部加入,默認后綴為 url_html_suffix
~~~
'url_html_suffix' => '.html'
~~~
我們可以通過 suffix 參數來關閉后綴,或者自定義后綴。
~~~
# /index.php/hello/world
echo \Q::url ( 'hello/world', [ ], [
'suffix' => false
] );
# /index.php/hello/world.jsp
echo \Q::url ( 'hello/world', [ ], [
'suffix' => '.jsp'
] );
~~~
# 泛域名支持
如果你的系統有著復雜二級域名,那么可以通過這樣子實現。
~~~
'url_router_domain_top' => 'queryphp.cn'
'url_make_subdomain_on' => true
~~~
例子:
~~~
# http://www.queryphp.cn/index.php/hello/world.html
\Q::url ( 'hello/world' );
# http://vip.queryphp.cn/index.php/hello/world.html
\Q::url ( 'hello/world', [ ], [
'subdomain' => 'vip'
] );
# http://defu.vip.queryphp.cn/index.php/hello/world.html
\Q::url ( 'hello/world', [ ], [
'subdomain' => 'defu.vip'
] );
# http://queryphp.cn/index.php/hello/world.html
\Q::url ( 'hello/world', [ ], [
'subdomain' => '*'
] );
~~~
> 說明:大家可以綜合運用本文的提到的功能以滿足你的項目需求。
- 關于 QueryPHP
- 獲取 QueryPHP
- 環境要求
- 許可協議 Free
- 執行流程 MVC
- 命名規范 $sName
- 目錄結構 DIR
- 單一入口 index.php
- 響應客戶端請求 URL
- 命名空間與自動載入 Autoload
- 路由
- 路由導入
- 批量導入
- 參數正則
- 分組定義
- 路由綁定
- 路由域名
- 分層控制器
- 默認和初始化APP
- 默認控制器和方法
- url 模式
- url 生成
- url 偽靜態
- url 重寫
- url 重定向
- 控制器綁定
- 方法器分層
- 控制器 __init
- 控制器方法交互
- 模板引擎語法
- C變量輸出 $sName
- C變量支持函數和方法 $sName|trim
- C快捷輸出 ~
- C標簽簡化 Css & Javascript
- C默認值 eq 三元運算符
- C變量運算符 +-
- 變量遞增遞減 ++--
- C循環數據 list
- N變量賦值 assign
- N循環數據 list
- N循環數據高級版 lists
- C循環數據 while
- N循環數據 while
- C循環數據 for
- N循環數據 for
- C條件判斷 if
- N條件判斷 if
- 標簽嵌套無限層級
- N循環流程 break & continue
- N使用 PHP 代碼
- N包含子模板 include
- J模板引擎 intro
- J條件判斷 if
- J循環數據 each
- J變量 & 表達式
- J變量支持函數和方法 hello|test
- J默認值 eq 三元運算符
- J框架前端組件 jquery.queryphp.js
- J前端 CSS 規范
- J前端 JS 規范
- 保護標簽自身 tagself
- 數據庫
- 數據庫配置
- 執行原生 sql 語句
- 數據庫事務
- 數據庫構造器 prefix
- 數據庫構造器 table
- 數據庫構造器 forceIndex
- 數據庫構造器 where
- 數據庫構造器 bind
- 數據庫構造器 join
- 數據庫構造器 union
- 數據庫構造器 orderBy
- 數據庫構造器 groupBy
- 數據庫構造器 having
- 數據庫構造器 distinct
- 數據庫構造器 aggregate
- 數據庫構造器 limit
- 數據庫構造器 forUpdate
- 數據庫構造器 columns
- 數據庫構造器 reset
- 數據庫集合查詢
- 數據庫查詢數據 get
- 數據庫查詢多條數據 getAll
- 數據庫查詢單條數據 getOne
- 數據庫查詢聚合查詢 aggregate
- 數據庫寫入數據 insert
- 數據庫寫入數據 insertAll
- 配置
- 配置格式
- 慣性配置
- 配置文件
- 讀取配置
- 設置配置
- 刪除配置
- 日志
- 日志配置參數
- 日志路徑
- 日志過濾器
- 日志處理器
- 緩存
- 緩存配置參數
- 緩存路徑
- 緩存指定時間
- COOKIE
- COOKIE 配置參數
- 開發調試
- 頁面 trace