ホームページ >PHPフレームワーク >ThinkPHP >thinkphp ルーティングが変換されない問題を解決する方法

thinkphp ルーティングが変換されない問題を解決する方法

WBOY
WBOY転載
2023-05-27 17:07:221428ブラウズ

1. 問題の説明

開発に ThinkPHP を使用すると、ルーティング操作を実行すると、ページが正しく表示されないという状況に遭遇することがあります。期待したインターフェイスにジャンプしません。

たとえば、URL「www.example.com/home/do」を通じて「HomeController.php」の「do」メソッドにアクセスしたいと考えていますが、実際にはこのメソッドにアクセスできません。同時に、エラーメッセージも表示されず、起動できないことがわかりました。

2. 原因分析

ThinkPHP では、ルーティングは URL サフィックスによって照合されます。 URL にサフィックスを使用しない場合、ThinkPHP はアクセスしたいメソッドがコントローラーのデフォルトのメソッドであるとみなします (デフォルトのメソッド名は通常「index」です)。

たとえば、URL「www.example.com/home/index」を使用すると、デフォルトで「HomeController.php」の「index」メソッドにアクセスします。

URL "www.example.com/home/do" を使用すると、サフィックスが使用されていないため、ThinkPHP は "index" メソッドにアクセスしたいと考えます。 "メソッドはコントローラ内に存在しないため、ページアクセスは失敗します。

3. 解決策

1. 「/」サフィックスを使用します

URL の末尾にスラッシュ「/」を追加すると、ルート不一致の状況は回避できます。たとえば、URL「www.example.com/home/do/」を使用して、「HomeController.php」の「do」メソッドにアクセスできます。

同時に、開発に ThinkPHP を使用する場合は、ルートが変換されない問題を回避するために、設定ファイル config.php の URL サフィックスを「/」に設定することをお勧めします。

2. ルーティング ルールを変更する

ルーティング ルールを変更することで問題を解決することもできます。

まず、ルーティング設定ファイル (通常はroute.php) で、ルーティング ルールを次のように定義できます。

return [
    'home/do/[:id]' => 'home/[:action]',
];

このようにして、URL「www.example.com」を渡すことができます。 /home/do/1" を使用して、"HomeController.php" の "do" メソッドにアクセスし、URL で id パラメーターを渡します。

以上がthinkphp ルーティングが変換されない問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。