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 つの手順を実行する必要があります。 上記のコントローラー メソッドに対応するビューを作成しましょう。

次の画像は、アプリケーションがどのように見えるかを示しています。

CodeIgniter のビュー

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

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

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 ネットワークからビルマ 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 の開発を開始するために知っておく必要があるルーティングの基本について説明しました。