CodeIgniterのコントローラー、ビューのルーティング:例を通して学ぶ

⚡ スマートサマリー

この CodeIgniter のサンプルでは、​​ルーティング、コントローラー、ビューがどのように連携して動作するかを示す小さなアプリケーションを構築します。Composer で新しいプロジェクトが作成され、ルートマップが作成されます。 URLコントローラーメソッドに渡され、各メソッドはビューをロードし、ブラウザにHTMLを返します。

  • 🧭 ルーティング: ルートは URL コントローラーメソッド、および一致しない URL ページが見つからないというエラーが発生します。
  • 🎛️ コントローラ: コントローラメソッドは、ルートに応答し、データを要求し、ビューを返します。
  • 飲料衣<XNUMXxXNUMX><XNUMXxBC><XNUMXxBC> 閲覧数: ビューは HTML、CSS、および Java結果をユーザーに表示するためのスクリプト。
  • 📦 プロジェクトの設定: Composerがプロジェクトを作成し、内蔵のPHPサーバーがそれをローカルで実行します。
  • 🏠 デフォルトルート: default_controllerはホームページを設定し、404_overrideはカスタムエラーページを設定します。
  • カスタムルート: about-usのようなルートは、Welcomeコントローラーのabout_usメソッドに対応します。
  • 🔁 フルフロー: URL コントローラーにルーティングして表示し、その後HTMLをブラウザに返す。

CodeIgniterのコントローラーとビュー

このチュートリアルでは、以下のトピックについて学習します。

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

新規作成方法 Codeイグナイタープロジェクト

Composer を使用して新しいプロジェクトを作成します。PHP の組み込みサーバーを使用するため、次のような追加のソフトウェアは必要ありません。 アパッチこのチュートリアルでは、 Windows オペレーティングシステムに合わせて、CドライブにSitesフォルダを作成しました。ご自身にとって適切なディレクトリであればどれでも使用できます。

コマンドラインまたはターミナルを開き、次のコマンドを実行します。

cd C:\Sites

これから作成します CodeComposer を使用した Igniter プロジェクト。以下のコマンドを実行してください。

composer create-project CodeIgniter/framework ci-app

ここに:

  • 上記のコマンドは新しい CodeIgniterプロジェクトバージョン3(執筆時点では最新の安定版3.1.9)をci-appというディレクトリに配置します。

コマンドの実行が完了すると、ターミナルに以下のような結果が表示されます。

作曲家が新しい Codeイグナイタープロジェクト

新しく作成されたプロジェクトディレクトリ「ci-app」に移動するには、次のコマンドを実行します。

cd ci-app

それでは、PHPに組み込まれているWebサーバーを起動してください。

php -S localhost:3000

ここに:

  • 上記のコマンドは、ポート3000で動作する組み込みのPHPサーバーを起動します。

ウェブブラウザを開き、次のサイトにアクセスしてください。 URL: http://localhost:3000/次のページが表示されます。

CodeIgniterのデフォルトのウェルカムページ

上記のページが表示されていれば、インストールは成功です。おめでとうございます。 Codeイグナイターこのページは、application/views/welcome_message.php にあるビューによってレンダリングされ、対応するコントローラーは application/controllers/Welcome.php にあります。

Codeイグナイタールーティング

今のところ、私たちのアプリケーションには 1 つの機能しかありません URLこれはホームページです。このセクションでは、ホームセクションをカスタマイズし、新しいものをいくつか作成します。 URLさまざまな要求に応答する。

まずはホームページのルートから始めましょう。以下のパスにあるroutesファイルを開いてください。

application/config/routes.php

以下の内容が表示されるはずです。

$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

ここに:

  • $route['default_controller'] = 'welcome'; は、URI リクエストに応答するデフォルトのコントローラーを定義します。
  • $route['404_override'] = ”; を使用すると、404 エラー用のカスタム ルートを定義できます。404 エラーは、ページが見つからない場合に発生します。 CodeIgniterにはエラーに対するデフォルトのハンドラが用意されていますが、必要に応じて独自のハンドラを定義することもできます。
  • $route['translate_uri_dashes'] = FALSE; を使用すると、ハイフンをアンダースコアに変換できます。このオプションについては、ルートの仕組みを解説する際に説明します。 Code点火装置。

それでは、最初に開いたときに表示されたホームページを表示する役割を担うコントローラーメソッドを見ていきましょう。 http://localhost:3000/次のファイルを開いてください。

application/controllers/Welcome.php

以下のコードが表示されるはずです。

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {

public function index()
{
$this->load->view('welcome_message');
}
}

ここに:

  • defined('BASEPATH') OR exit('No direct script access allowed'); は、index.php ファイルを経由せずにコントローラー クラスに直接アクセスすることを防ぎます。MVC パラダイムでは、すべてのリクエストに単一のエントリ ポイントがあり、 CodeIgniterはindex.phpです。このコードは、index.phpを経由しないすべてのリクエストをブロックします。
  • class Welcome extends CI_Controller {…} は、親クラス CI_Controller を継承するクラス Welcome を定義します。
  • public function index() は、ホームページを開いたときにデフォルトで呼び出される公開関数を定義します。
  • $this->load->view('welcome_message'); は、application/views/welcome_message.php にある welcome_message ビューを読み込みます。

これまでは箱から出たものだけを調べてきました CodeIgniter。それでは、いくつか変更を加えましょう。独自のホームページを作成し、デフォルトのページを置き換えます。application/views/home.php に新しいファイルを作成し、以下のコードを追加してください。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Hello CodeIgniter!</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">
CodeIgniter Hello World
</h1>
</div>
</section>
</body>
</html>

ここに: 上記のHTMLコードは、CDNからBulma CSSフレームワークとFont Awesomeを読み込み、非常に基本的なHTMLドキュメントを作成します。そして、Bulma CSSフレームワークのシンプルなCSSルールを適用します。

以下を開きます URL ブラウザで: http://localhost:3000/。 次の内容が表示されるはずです。

カスタム額装 CodeIgniterのホームページ

素晴らしい!ホームページの変更に成功しました。次に、ルートを定義しましょう。アプリケーションには、会社概要ページも表示する必要があると仮定します。

ルートを作成する

ルートファイル application/config/routes.php を開き、以下のルートを追加してください。

$route['about-us'] = 'welcome/about_us';

ここに:

  • 訪問者が URL /about-us、私たちは指示します CodeIgniter はコントローラー Welcome を探し、メソッド about_us を実行します。

コントローラーを作成する

それでは、コントローラーメソッド about_us を定義しましょう。application/controllers/Welcome.php を開き、以下のメソッドを追加してください。

public function about_us(){
$this->load->view('about_us');
}

ここに:

  • 上記のコードは、about_us という関数を定義し、about_us というビューを読み込みます。

ビューの作成

それでは、先ほど参照したビューを作成しましょう。application/views/about_us.php ディレクトリに about_us.php という新しいファイルを作成し、以下のコードを追加してください。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>About CodeIgniter!</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">
About us yap...
</h1>
</div>
</section>
</body>
</html>

準備完了です。以下を開いてください。 URL ウェブブラウザで: http://localhost:3000/index.php/about-us次のページが表示されます。

CodeIgniterについてページ

上記のページが表示されている場合は、おめでとうございます。シンプルなアプリケーションの作成に成功しました。 Code点火装置。

よくあるご質問

ルートエントリは、 URL セグメントをコントローラーとメソッドに渡します。たとえば、「welcome/about_us」などです。 URL 要求されています、 CodeIgniterは指定されたメソッドを実行し、ビューを読み込んで返します。

特定の指定がない場合にサイトルートを処理するコントローラーを設定します URL が与えられます。この例では、「welcome」は、Welcomeコントローラーのindexメソッドによってホームページが提供されることを意味します。

いいえ。php -S localhost:3000 で起動する組み込みの PHP サーバーで、ローカル環境でサンプルを実行するには十分です。Apache や Nginx は、本番環境でのデプロイ時のみ必要です。

はい。ページの説明から、AI はルートエントリ、コントローラーメソッド、および一致するビューを生成し、ping 名前は一貫しています。パスを照合してください CodeIgniter版。

この例では、 CodeIgniter 3 は、コントローラーとビューを application/ の下に保存します。 CodeIgniter 4ではディレクトリと名前空間の構造が変更されたため、新しいプロジェクトではパスと構文が異なります。