CodeIgniter ルート: URL ルーティングと例
CodeIgniter ルートとは何ですか?
ルートは URL リクエストに応答する責任があります。 ルーティングは、URL を事前定義されたルートと照合します。 一致するルートが見つからない場合、CodeIgniter はページが見つからないという例外をスローします。
CodeIgniter のルートは、次の式を使用して定義されます。
example.com/Controller/Method/Parameter/
ここに、
- コントローラー - URL に応答するコントローラー名にマップされます。
- メソッド – URI リクエストに応答するコントローラー内のメソッドにマップされます。
- パラメータ – このセクションはオプションです。
CodeIgniter ルートの例
では、実際の URL ルーティングを見てみましょう。 CodeIgniter 例。
次のURLを検討してください http://localhost:3000/contacts/edit/1
ここに、
- 上記URLに応答するコントローラーの名前は「contacts」です
- コントローラークラスContactsのメソッドは「edit」です
- edit メソッドはパラメータを受け取ります。 この例の場合、値「1」がメソッドに渡されます。
私たちが計画していることの簡単な背景は次のとおりです。
- ルーティング – ルーティングは URL リクエストに応答する責任があります。 CodeIgniter Routing は、URL を事前定義されたルートと照合します。 一致するルートが見つからない場合、CodeIgniter はページが見つからない例外をスローします。
- コントローラ – ルートはコントローラーにリンクされています。 コントローラーはモデルとビューを結合します。 モデルからデータ/ビジネス ロジックをリクエストし、ビュー プレゼンテーションを介して結果を返します。 URL が CodeIgniter のルートと一致すると、データ ソース、ビジネス ロジックと対話し、結果を表示するビューを返すコントローラーのパブリック関数に転送されます。
- ビュー – ビューはプレゼンテーションを担当します。 ビューは通常、HTML、CSS、および Javaスクリプトこれは、Web ページをユーザーに表示する役割を担う部分です。通常、表示されるデータは、データベースまたはその他の利用可能なデータ ソースから取得されます。
実際のプロジェクトでルーターを実装する方法を学ぶために、連絡先の詳細を管理するためのアプリケーションを作成していると仮定します。次の表は、使用する URL を示しています。
S / N | URL | ルート | コントローラー | 方法 |
---|---|---|---|---|
1 | / | $route['デフォルト_コントローラー'] | ようこそ | index |
2 | / contacts | $route['連絡先'] | お問い合わせ | index |
3 | /連絡先/作成 | $route['作成'] | お問い合わせ | 作ります |
4 | /連絡先/編集/id | $route['編集/:id'] | お問い合わせ | edit |
5 | /連絡先/更新/id | $route['update/:id'] | お問い合わせ | update |
6 | /連絡先/削除/id | $route['削除/:id'] | お問い合わせ | 削除 |
上の表に基づいてアプリケーションのルートを作成します。 URL、CodeIgniter ルートを定義し、それぞれのコントローラー名とメソッド名にマッピングしました。
アプリケーションの URL ルーティングの作成
チュートリアル プロジェクト用に CodeIgniter URL Routing を作成しましょう
application/config/routes.php を開きます
ルートを次のように変更します
$route['default_controller'] = 'welcome'; $route['contacts'] = 'contacts'; $route['create'] = 'contacts/create'; $route['edit/:id'] = 'contacts/edit'; $route['update/:id'] = 'contacts/update'; $route['delete/:id'] = 'contacts/delete'; $route['404_override'] = ''; $route['translate_uri_dashes'] = FALSE;
ここに、
- $route['default_controller'] = 'ようこそ'; デフォルトのコントローラー「Welcome」を定義します。
- $route['連絡先'] = '連絡先'; 連絡先コントローラーのインデックス メソッドを呼び出す連絡先ルートを定義します
- $route['作成'] = '連絡先/作成'; Contacts コントローラーを指し、create メソッドを呼び出すルート作成を定義します。
- $route['edit/:id'] = '連絡先/編集'; ID のパラメータを受け取り、連絡先コントローラの編集メソッドを指すルート編集を定義します。
- $route['update/:id'] = '連絡先/更新'; id のパラメータを受け取り、Contacts クラスの update メソッドを指すルート更新を定義します。
- $route['delete/:id'] = '連絡先/削除'; id のパラメーターを受け取り、Contacts コントローラーの delete メソッドを指すルート削除を定義します。
次の表は、上記で定義されたルートから派生したそれぞれのURLを示しています。
S / N | ルート | 対応URL |
---|---|---|
1 | $route['default_controller'] = 'ようこそ'; | http://localhost:3000 |
2 | $route['連絡先'] = '連絡先'; | http://localhost:3000/contacts |
3 | $route['作成'] = '連絡先/作成'; | http://localhost:3000/contacts/create |
4 | $route['edit/:id'] = '連絡先/編集'; | http://localhost:3000/contacts/edit/1 |
5 | $route['update/:id'] = '連絡先/更新'; | http://localhost:3000/contacts/update/1 |
6 | $route['delete/:id'] = '連絡先/削除'; | http://localhost:3000/contacts/delete/1 |
ルートを説明したので、ルートで指定されたアクションに応答する連絡先コントローラーを作成しましょう。
CodeIgniter で新しい Route ファイルを application/controllers/Contacts.php に Contacts.php として作成します。
次のコードを追加します
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Contacts extends CI_Controller { public function __construct() { parent::__construct(); $this->load->helper('url'); } public function index() { $this->load->view('header'); $this->load->view('contacts/index'); $this->load->view('footer'); } public function create() { $this->load->view('header'); $this->load->view('contacts/create'); $this->load->view('footer'); } public function edit($id) { $this->load->view('header'); $this->load->view('contacts/edit'); $this->load->view('footer'); } public function update($id) { $this->load->view('header'); $this->load->view('contacts/update'); $this->load->view('footer'); } public function delete($id) { $this->load->view('header'); $this->load->view('contacts/delete'); $this->load->view('footer'); } }
ここに、
- Class contacts extends CI_Controller {..} はコントローラー クラスを定義し、CodeIgniter に付属する CI_Controller クラスを拡張します。
- 上記で定義したメソッドは定義したルートに対応しており、delete のようなパラメータを持つメソッドは $id のパラメータを受け入れます。
- 関数が 3 つのビューをロードしていることに注目してください。 ヘッダーとフッターはすべてのメソッドで共通です。 中央のビューはアクションに非常に固有です。つまり、削除関数の場合は削除、関数作成の場合はビューの作成などです。覚えておくべきもう XNUMX つの重要な点は、ビューは contacts サブディレクトリからロードされるということです。
CodeIgniter のビュー
Web ブラウザーでパラメーターを使用して CodeIgniter ルートをテストする前に、もう XNUMX つの手順を実行する必要があります。 上記のコントローラー メソッドに対応するビューを作成しましょう。
次の画像は、アプリケーションがどのように見えるかを示しています。
application/viewsに以下のファイルを作成します。
header.php – this file will contain contacts app menu and the header footer.php – this files will contain the application footer.
ビュー application/views/contacts に連絡先の新しいディレクトリを作成します
以下のファイルを作成します
index.php create.php edit.php
ファイル構造は次のようになります。
header.php を更新しましょう。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>CodeIgniter Routes</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css"> <script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script> </head> <body> <section class="section"> <div class="container"> <h1 class="title">CI Contacts v1</h1> <h2 class="subtitle">CodeIgniter contacts management app</h2> <div class="columns"> <div class="column is-one-quarter"> <aside class="menu"> <p class="menu-label"> General </p> <ul class="menu-list"> <li><a class="is-active" href="#">Dashboard</a></li> <li><a href="<?=site_url('contacts/create')?>">New Contact</a></li> <li><a href="<?=site_url('contacts/edit/1')?>">Edit Contacts</a></li> </ul> <p class="menu-label"> Settings </p> <ul class="menu-list"> <li><a href="#">SMS</a></li> <li><a href="#">Email</a></li> </ul> </aside> </div>
ここに、
- 上記の HTML コードは、CDN ネットワークからビルマ CSS を読み込みます。
以下はfooter.phpのコードです。
</div> </div> </section> </body> </html>
次に、連絡先のindex.php、edit.php、create.phpファイルのコードを追加しましょう。
index.php <div class="column">Index content goes here...</div> edit.php <div class="column">Edit content goes here...</div> create.php <div class="column">Create content goes here...</div>
加えられたすべての変更を保存できます。
ウェブブラウザで次のURLを開きます http://localhost:3000/contacts/
[新しい連絡先] リンクと [連絡先の編集] リンクをクリックすると、何が起こるかを確認できます。
まとめ
- CI のルートは、URL リクエストに応答する責任があります。 ルーティングは、URL を事前定義されたルートと照合します。 CodeIgniter Route の一致が見つからない場合、CodeIgniter はページが見つからないという例外をスローします。
- CI ルーティングは、URL リクエストに応答する責任があります。 ルーティングは、URL を事前定義されたルートと照合します。
- コントローラーはモデルとビューを結合します。 モデルからデータ/ビジネス ロジックをリクエストし、ビュー プレゼンテーションを介して結果を返します。
- ビューはプレゼンテーションを担当します。ビューは通常、HTML、CSS、 Java脚本。
- このチュートリアルでは、実際のサンプル アプリケーション用に CodeIgniter でルートを作成する方法を学習し、CodeIgniter の開発を開始するために知っておく必要があるルーティングの基本について説明しました。