程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> thinkphp空操作和配置文件實現簡化路由

thinkphp空操作和配置文件實現簡化路由

編輯:PHP綜合

1關於TP中空操作和路由問題

<?php
function test(){
    $content="test demo @雲峰天下";
    $pattern='/@(\S+)\s/';
    $content=preg_replace($pattern,'<a href="'.__APP__.'/user/index/uname/\\1">\\1</a>');
     return $content;   
}

最近在做一個微博,有一塊是微博內容@用戶加鏈接,跳轉到用戶頁,剛開始感覺沒什麼難的,可以通過正則替換實現。

就像上面一樣,將用戶名使用get傳值帶到相應的控制器下面的方法下去。但是url確實太長,看了下視頻中的介紹,使用了

空操作和路由進行了處理。

<?php
function test(){
    $content="test demo @雲峰天下";
    $pattern='/@(\S+)\s/';
    $content=preg_replace($pattern,'<a href="'.__APP__.'/user/\\1">@\\1</a>');
     return $content;   
}

將代碼進行修改後如上,修改後鏈接是這樣:<a href="localhost/weibo/user/雲峰天下">@雲峰天下</a>,但是user控制器下是沒有這個方法的?

最後看完視頻感覺tp挺強大的,是通過定義一個空操作和通過用戶名獲取用戶id,再通過配置路由從而實現簡化路由

/**
     * 空操作
     */
    function _empty($name){
        $this->_getUrl($name);
    }
    /**
     * 處理用戶名空操作,獲得用戶ID,跳轉至用戶個人頁
     */
    private function _getUrl($name){
        $where=array('username'=>$name);
        $uid=M('userinfo')->where($where)->getField('uid');
            
        if(!$uid){
            redirect(U('Index/index'));
        }else{
            redirect(U('/'.$uid));
            //redirect(U('index',array('uid'=>$uid)));
        }
    }

在上面中由於是訪問user下的每個用戶名作為方法,會執行_empty()方法,該方法下調用私有方法_getUrl(),跳轉到localhost/weibo/index.php/4(用戶id號),由於該模塊不存在,因此需要通過配置文件中的路由配置實現,如下

//URL路由配置
    'URL_ROUTER_ON'=>true,   //開啟路由功能
    'URL_ROUTE_RULES'=>array(   //定義路由規則
        ':id\d'=>'User/index'
    )

查看本欄目

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved