今回は、thinkphpのUメソッドを使用してルーティングルールに基づいてURLを生成する手順について詳しく説明します。thinkphpのUメソッドを使用して生成する際に注意すべき注意事項とは何ですか。ルーティング ルールに基づく URL ここで実際のケースを見てみましょう。以下に示すように
:
//更改模块配置文件 'URL_ROUTER_ON' => true, 'URL_ROUTE_RULES'=>[]//编写路由优化
tp ルーティングをオンにした後、U メソッドを使用すると、ルーティング ルールに従って URL が生成されません。通常、テンプレートを手動で変更し、テンプレート内の U メソッドを削除する必要があります。 , プログラムがすでに書かれていて後からルーティングを追加する場合、リンクを修正するのは面倒なので、今日は退屈して、U メソッドをそれに応じて URL を生成できるように修正しました。ルーティング ルールを 1 つずつ変更する必要はありません。
/ThinkPHP/Common/functions.php ファイルに次のコードを追加し、直接
U メソッドでif($suffix) を検索し、先頭に次のコードを追加します。 u メソッドによって生成される URL が生成されます。ルーティングルールに従ってください! if(C('URL_ROUTE_RULES')){
foreach (C('URL_ROUTE_RULES') as $rule=>$real) {
if(strpos($url, $real)!==false){
$url = str_replace($real, $rule, $url);
preg_match("/\/(\w+)\.php\/(\w+)/", $url, $match);
if(isset($match[1]) && isset($match[2]) && $match[1][0]==$match[2][0]){
$url = preg_replace("/\/(\w+)\.php/", '', $url);
}elseif(strpos($url, 'index.php')!==false){
$url = str_replace("/index.php", '', $url);
}else{
$url = str_replace(".php", '', $url);
}
preg_match_all("/(:\w+)/", $rule, $matches);
foreach ((array)$matches[1] as $match) {
$url = str_replace($match . '/', '', $url);
$url = str_replace(substr($match, 1) . '/', '', $url);
}
}
}
}
推奨読書:
phpで配列を連続数値インデックスにリセットする方法phpで配列をマージし、キー値を保持する方法は何ですか?以上がthinkphpのUメソッドを使用してルーティングルールに従ってURLを生成する手順の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。