処理コードイグニット4ビュー-14-レイアウト


レイアウトの使用


多くのサイトでレイアウトが使用されています.どのページでも共通画面(共通タイトル、汎用プッシュなど)を使用でき、通常は本文のみが変更されます.
これらの共通の部分を1つの場所に置いて、本文のレイアウトだけを変更します.
コードは、この世代4でもレイアウトをサポートします.どうすればいいか見てみましょう.
作成するページは次のとおりです.

コードはhttps://github.com/koeunyeon/ci4/tree/view-layoutにあります.Viewコントローラに次の方法を追加します.app/Controllers/View.php
public function layout()
{
    $hello = "안녕하세요"; // (1)
    return view("/view/layout_content.php", [ // (2)
        'hello' => $hello
    ]);
}
(1)任意の変数$helloを宣言し、データをビューに転送して、レイアウトおよびレイアウト本文にデータが転送されることを保証する.
(2)返されるビュー名は「レイアウトパス」ではなく「実際に使用したコンテンツパス」である.
コンテンツを担当するビューを追加します.app/Views/view/layout_content.php
<?= $this->extend('/view/layout') ?>  <!-- (1) -->
<?= $this->section('content') ?>  <!-- (2) -->
    <h2>여기는 레이아웃 본문입니다.</h2>
    <p style="font-weight: bold;">컨트롤러에서 보낸 데이터 : <?= $hello ?></p>  <!-- (3) -->
<?= $this->endSection() ?>  <!-- (4) -->
(1)ビューのレイアウトを$this->extend(레이아웃 경로)コードとして指定する.コードイグニット4は、「現在のビューを展開」(extend)を表す.パラメータはレイアウトパスです.
(2)本文に置き換えられた部分(section)を$this->section(섹션이름)として指定する.パラメータは部分の名前を取ります.1つのセクションでは、複数のセクションに分割できるため、個別に名前を付けることができます.例は'content'として指定されます.
(3)コントローラから送信されたデータをマークするために<?= $hello ?>をチェックする.同じデータもレイアウトで使用できますが、区別を容易にするために、文字を太字(font-weight: bold;)にマークしてみました.
(4)$this->endSection()構文を用いて節の終わりを表す.
アウトラインをスナップするレイアウトビューを追加します.app/Views/view/layout.php
<!doctype html>
<html>
<head>
    <title>레이아웃 확인</title>
</head>
<body>
<h1>여기는 레이아웃 영역입니다.</h1>
<p style="font-style: italic">컨트롤러에서 보낸 데이터 : <?= $hello ?></p> <!-- (1) -->
<hr />
<?= $this->renderSection('content') ?>  <!-- (2) -->
</body>
</html>
(1)コントローラから送信されたデータが読み取り可能であることを確認する.
(2)$hello構文を用いてレイアウト内のコンテンツの配置位置を指定する.セクション名は、$this->renderSection(섹션이름)からlayout_content.phpに設定されているため、$this->section('content')と命名される.
ブラウザで、http://localhost:8080/view/layoutに接続して結果を表示します.
この例では、実際の出力結果を検証するために、ソースビューを使用して直接コンテンツを表示します.ほとんどのブラウザでは、contentキーを押して現在のページのソースを表示できます.
<!doctype html>
<html>
<head>
    <title>레이아웃 확인</title>
</head>
<body>
<h1>여기는 레이아웃 영역입니다.</h1>
<p style="font-style: italic">컨트롤러에서 보낸 데이터 : 안녕하세요</p>
<hr />
    <h2>여기는 레이아웃 본문입니다.</h2>
    <p style="font-weight: bold;">컨트롤러에서 보낸 데이터 : 안녕하세요</p>
</body>
</html>
$this->renderSection('content')ラベルとcontentラベルを含む本文「部分」は、レイアウトを使用して拡張されます.
やっと長時間の観覧エリアを終了次の章では、バックエンド開発者が好むデータベースについて説明します.