ホームページ > バックエンド開発 > PHPチュートリアル > CakePHP でルーティングを設定するにはどうすればよいですか?

CakePHP でルーティングを設定するにはどうすればよいですか?

WBOY
リリース: 2023-06-04 11:22:01
オリジナル
1337 人が閲覧しました

CakePHP は、Web アプリケーション開発を高速化するためのさまざまな機能とコンポーネントを提供する人気のある PHP フレームワークです。非常に便利なコンポーネントの 1 つはルーティングです。これは、Web アプリケーションで URL を管理するために使用されます。

ルーティングとは、URL リクエストをアプリケーション内の対応するコンポーネントまたは操作にマッピングするプロセスを指します。 CakePHP では、ルート マネージャーはルーティング ルールを使用して URL を識別し、それらをコントローラー、アクション、またはその他のパラメーターに解決します。

この記事では、Web アプリケーションの URL をより適切に制御するために、CakePHP でルーティング ルールを設定する方法を詳しく説明します。

  1. 基本的なルーティング ルール

CakePHP の基本的なルーティング ルールは、URL をコントローラとそのアクションにマッピングすることです。デフォルトでは、CakePHP は URL パスの最初のセグメントとしてコントローラー名を使用し、その後にコントローラー内で呼び出されるアクションの名前が続きます。

たとえば、「ArticlesController」というコントローラーがあり、「view」というアクションがある場合、デフォルトで URL「/articles/view」がそのアクションにマップされます。

コントローラー名が URL パス内の名前と異なる場合、または別のアクション名を使用する場合は、カスタム ルーティング ルールを使用する必要があります。

  1. カスタム ルーティング ルール

カスタム ルーティング ルールを設定するには、config/routes.php ファイルを開きます。このファイルには、ルーティング マネージャーによって使用されるすべてのルーティング ルールが含まれています。

このファイルでは、Router::connect() メソッドを使用してルーティング ルールを定義できます。このメソッドの最初のパラメーターは URL パス テンプレートで、プレースホルダーを使用してコントローラーとアクションを表します。 2 番目のパラメータは、呼び出されるコントローラ/アクションの名前です。

たとえば、URL "/news/latest" を "NewsController" の "latest" アクションにマップする場合は、次のコードを使用できます。

Router::connect('/news/latest', array('controller' => 'News', 'action' => 'latest'));
ログイン後にコピー

管理コントローラ。「ダッシュボード」というアクションがあり、URL「/admin/dashboard」をそのアクションにマップするには、次のコードを使用できます。

Router::connect('/admin/dashboard', array('controller' => 'Admin', 'action' => 'dashboard'));
ログイン後にコピー

プレースホルダーには、次のコードを使用できます。 URL パス コロン (:) の後に「:id」などのプレースホルダー名を続けて使用します。コントローラー/アクション名では、変数の $placeholder 名を使用できます。

たとえば、URL「/articles/123」を「ArticlesController」の「view」アクションにマップし、記事の ID をアクションのパラメータとして使用する場合は、次のコード:

Router::connect('/articles/:id', array('controller' => 'Articles', 'action' => 'view'), array('pass' => array('id')));
ログイン後にコピー

上記のコードでは、URL 内の投稿 ID と一致するプレースホルダーとして「:id」を使用し、「id」を「pass」オプションとしてアクションに渡します。これにより、コントローラーで $this->request->params 'pass' を使用して投稿 ID にアクセスできるようになります。

CakePHP のルーティング ルールは、定義された順序で解析されることに注意してください。同じ URL パス テンプレートを使用して複数のルーティング ルールを定義している場合は、ルートが正しく解決されるように、最も具体的なルールを最初に置く必要があります。

  1. 名前付きルーティング ルール

名前付きルーティング ルールは、ルーティング アドレスに覚えやすい名前を付ける方法です。これらのルールは Router::connectNamed() メソッドを使用して定義でき、$prefixes オプションを使用して名前付けプレフィックスを定義できます。

たとえば、「user」という名前のコントローラがあり、URL「/u/123」をそのコントローラの「表示」アクションにマップし、ユーザー ID をパラメータとして渡したい場合、アクション 。次のコードを使用できます。

Router::connectNamed(array('id'));
Router::connect('/u/:id', array('controller' => 'User', 'action' => 'view'), array('id' => 'd+'));
ログイン後にコピー

上記のコードでは、最初に Router::connectNamed() メソッドを使用して「id」という名前付けプレフィックスを定義します。次に、URL パスを「/u/:id」に設定し、ユーザー ID をアクションのパラメーターとして使用して、それを「UserController」の「view」アクションにマップします。最後に、正規表現を使用して、ID パラメーターが数値のみを受け入れるように制限します。

これで、アプリケーションで Router::url() メソッドを使用して、名前付きルートの URL を生成できるようになります。たとえば、次のコードを使用して URL を生成します: "/u/123":

Router::url(array('controller' => 'User', 'action' => 'view', 'id' => 123), array('named' => array('id')));
ログイン後にコピー

上記のコードでは、名前付きルーティング ルールのプレフィックス "id" を使用して ID の値を設定します。パラメータ。

概要

CakePHP では、ルーティングは URL マッピングを管理するための重要なコンポーネントです。これにより、アプリケーションの URL をカスタマイズし、アプリケーションのルーティングをより効率的に管理できるようになります。

CakePHP のルーティング マネージャーを使用すると、カスタム ルーティング ルールを定義し、名前付きルーティング ルールを処理し、正規表現を使用してルーティング パラメータを簡単に制限および検証できます。これらの機能により、より優れた制御と使いやすい URL が提供され、アプリケーションのユーザー エクスペリエンスが向上します。

以上がCakePHP でルーティングを設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート