本文實例講述了thinkphp框架實現路由重定義簡化url訪問地址的方法。分享給大家供大家參考,具體如下:
如果按照正常訪問的話,則需要輸入一長串的url地址,這樣會顯得十分冗長,我可以可以通過對路由規則的重新定義簡化url訪問地址。
?php
namespace app\index\controller;
class Index{
public function index(){
return '我是index';
}
public function hello($name='World'){
return 'Hello'.$name.'!';
}
}
?>
本來的訪問路徑應該是:
localhost/tp/index.php/index/index/hello
我們在路由定義文件(application/route.php)里面添加一些路由規則,如下:
return [
// 添加路由規則 路由到 index控制器的hello操作方法' hello/:name' => 'index/index/hello',
];
這是以hello開頭的并且帶參數的訪問都會路由到index控制器的hello操作方法。
此時路徑可以寫為:
localhost/tp/hello/Thinkphp
此時輸出結果為:
HelloThinkphp!
改變路由規則后若使用原來的路徑訪問方法后,則會出現錯誤。
但此時有一個問題是,如果訪問地址為:
localhost/tp/hello
話,會拋出 模板不存在的錯誤,因為在訪問時,沒有傳參,而在定義路由規則時,則帶有參數。
解決辦法是在修改路由規則為:
return [
// 添加路由規則 路由到 index控制器的hello操作方法' hello/[:name'] => 'index/index/hello',
];
使用[]
把路由規則中的變量包起來,就表示該變量為可選,接下來就可以正常訪問了。
當name參數沒有傳入值的時候,hello方法的name參數有默認值World,所以輸出的內容為
Hello,World!
除了路由配置文件中定義之外,還可以采用動態定義路由規則的方式定義,例如在路由配置文件(application/route.php)的開頭直接添加下面的方法:
use think\Route;
Route::rule('hello/:name', 'index/hello');
完成的效果和使用配置方式定義是一樣的。
無論是配置方式還是通過Route類的方法定義路由,都統一放到路由配置文件application/route.php文件中
更多關于thinkPHP相關內容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結》、《ThinkPHP常用方法總結》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術總結》。
希望本文所述對大家基于ThinkPHP框架的PHP程序設計有所幫助。
您可能感興趣的文章:- thinkphp的URL路由規則與配置實例
- thinkphp5 URL和路由的功能詳解與實例
- ThinkPHP路由詳解
- thinkphp路由規則使用示例詳解和偽靜態功能實現(apache重寫)
- ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
- 改寫ThinkPHP的U方法使其路由下分頁正常
- thinkPHP5.1框架路由::get、post請求簡單用法示例
- thinkphp中U方法按路由規則生成url的方法
- ThinkPHP路由機制簡介
- thinkPHP5框架路由常用知識點匯總
- thinkphp5框架路由原理與用法詳解