1. 程式人生 > 程式設計 >thinkphp框架實現路由重定義簡化url訪問地址的方法分析

thinkphp框架實現路由重定義簡化url訪問地址的方法分析

本文例項講述了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程式設計有所幫助。