Codeイグナイタールート: URL ルーティングの例

⚡ スマートサマリー

Codeイグナイター URL ルーティングマップ URL コントローラーとメソッドに、オプションのパラメーターを渡します。ルートは routes.php で定義されるため、 URL contacts/edit/1 のように、Contacts コントローラーの edit メソッドを実行し、ヘッダー、コンテンツ、フッターのビューを読み込みます。

  • 🧭 基本ルール: ルートは URL コントローラ、メソッド、およびオプションのパラメータに渡します。
  • 📐 式: パターンはコントローラー/メソッド/パラメーターで、application/config/routes.phpで定義されています。
  • 🏠 デフォルトルート: default_controller は、ホームページが設定されていない場合にホーム ページを設定します。 URL セグメントが与えられます。
  • 🔢 パラメーター: edit/:id のようなルートは、id の値をコントローラーのメソッドに渡します。
  • 🎛️ コントローラ: 各ルートは、対応するビューを読み込むメソッドにマッピングされます。
  • 飲料衣<XNUMXxXNUMX><XNUMXxBC><XNUMXxBC> 共通の見解: ヘッダーとフッターのビューは再利用され、アクションごとに特定のミドルビューが使用されます。
  • 404 取り扱い: 比類なき URL ページが見つからない例外を発生させますが、404_override で上書きできます。

Codeイグナイタールート

何ですか Codeイグナイタールート?

ルートは、 URL リクエスト。ルーティングは URL 定義済みのルートに。一致するルートが見つからない場合は、 CodeIgniterがページが見つからない例外をスローします。

ルート Code点火装置は、以下の式を用いて定義されます。

example.com/Controller/Method/Parameter/

ここに:

  • コントローラーは、応答するコントローラー名にマッピングされます。 URL.
  • メソッドは、URIリクエストに応答するコントローラー内のメソッドにマッピングされます。
  • パラメータ – このセクションはオプションです。

CodeIgniter ルートの例

それでは、実践的な例を見てみましょう。 URL ルーティング Codeイグナイター 例。以下を考えてみましょう。 URL: http://localhost:3000/contacts/edit/1

ここに:

  • 上記に応答するコントローラーの名前 URL 「連絡先」です。
  • Contacts コントローラークラスのメソッドは「edit」です。
  • 編集メソッドはパラメータを受け取ります。この例では、値「1」がメソッドに渡されます。

私たちが計画していることの簡単な背景は次のとおりです。

  • ルーティング – ルーティングは以下に対応します URL リクエスト。 CodeIgniter ルーティングは URL 定義済みのルートに。一致するルートが見つからない場合は、 CodeIgniterがページが見つからない例外をスローします。
  • コントローラ – ルートはコントローラーにリンクされています。コントローラーはモデルとビューを結合します。コントローラーはモデルからデータとビジネスロジックを要求し、ビューのプレゼンテーションを介して結果を返します。 URL ルートにマッチすると、データソースとビジネスロジックとやり取りしてビューを返すコントローラーのパブリック関数に転送されます。
  • ビュー – ビューはプレゼンテーションを担当します。ビューは通常、HTML、CSS、 Javaスクリプトこの部分は、ユーザーにウェブページを表示する役割を担います。通常、表示されるデータはデータベースまたは他のデータソースから取得されます。

実際のプロジェクトでルーティングを実装する方法を学ぶために、連絡先の詳細を管理するアプリケーションを作成していると仮定します。次の表は、 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'] 連絡先 削除

上記の表に基づいて、アプリケーションのルートを作成します。 URLs、 CodeIgniterのルートを設定し、それぞれのコントローラー名とメソッド名にマッピングしました。

作成 URL アプリケーションのルーティング

創造しよう Codeイグナイター URL チュートリアルプロジェクトのルーティング設定です。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['contacts'] = 'contacts'; は、Contacts コントローラーの index メソッドを呼び出す contacts ルートを定義します。
  • $route['create'] = 'contacts/create'; は、Contacts コントローラーを指し、create メソッドを呼び出す create ルートを定義します。
  • $route['edit/:id'] = 'contacts/edit'; は、id のパラメータを受け取り、Contacts コントローラの edit メソッドを指すルート edit を定義します。
  • $route['update/:id'] = 'contacts/update'; は、id のパラメータを受け取り、Contacts クラスの update メソッドを指すルート update を定義します。
  • $route['delete/:id'] = 'contacts/delete'; は、id のパラメータを受け取り、Contacts コントローラの delete メソッドを指すルート delete を定義します。

以下の表は、それぞれの URL上記で定義された経路から派生したs:

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

ルートについて説明したので、次にルートで指定されたアクションに応答する Contacts コントローラーを作成しましょう。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 {…} は、コントローラー クラスを定義し、付属の CI_Controller クラスを拡張します。 Code点火装置。
  • 上記で定義したメソッドは、定義したルートに対応しており、delete などのパラメータを持つメソッドは、$id というパラメータを受け入れます。
  • これらの関数は3つのビューを読み込むことに注目してください。ヘッダーとフッターはすべてのメソッドで共通です。中央のビューはアクションごとに異なり、削除機能の場合は「削除」、作成機能の場合は「作成」と表示されます。また、これらのビューは連絡先サブディレクトリから読み込まれることも覚えておくと良いでしょう。

Codeイグナイターの見解

テストを行うには、あと1ステップ必要です CodeIgniter のルートを Web ブラウザでパラメータ付きで表示します。上記のコントローラ メソッドに対応するビューを作成しましょう。次の画像は、アプリケーションの外観を示しています。

CodeIgniter連絡先アプリケーションのプレビュー

application/views ディレクトリに以下のファイルを作成してください。

header.php – this file will contain the contacts app menu and the header
footer.php – this file will contain the application footer

application/views ディレクトリ内に contacts という新しいディレクトリ (application/views/contacts) を作成し、その中に以下のファイルを作成します。

index.php
create.php
edit.php

ファイル構造は以下のようになります。

CodeIgniter ビューのファイル構造

それでは、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からBulma 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/「新規連絡先」と「連絡先の編集」のリンクをクリックして、何が起こるか確認してみてください。

よくあるご質問

ルートをedit/:idのようなプレースホルダーで定義し、コントローラーメソッドで対応する引数を受け取ります。たとえば、edit($id)のように指定します。 Codeイグナイターは URL その議論に切り込む。

CodeIgniterはページが見つからない例外をスローし、404ページを表示します。代わりにカスタムエラーページを表示するには、404_overrideを独自のコントローラーに指定してください。

site_url() は完全な URL base_url とルートから取得するため、サイトが移動したりベースパスが変更されたりしてもリンクは機能し続けます。 URL 最初にロードされるヘルパー。

はい。連絡先などのリソース名から、AIはRESTの慣例に従って、対応するコントローラメソッドを使用してインデックス、作成、編集、更新、削除ルートを生成できます。パラメータ名を確認してください。

ヘッダーとフッターを別々に読み込むことで、ページビューごとに同じレイアウトが繰り返されるのを防ぎます。各メソッドは、共有ヘッダー、特定のコンテンツビュー、そして共有フッターの順に読み込みます。