CakePHPでは、テンプレートに値を渡す際にset()メソッドを使用します。本記事では、set()の基本的な使い方や、compact()を利用した変数の一括設定について解説します。
1. set()を使ってテンプレートに値を渡す
CakePHPのset()メソッドを使うと、コントローラーで定義した変数をビュー(テンプレート)に渡すことができます。
コントローラーの記述
phpコピーする編集するclass ExampleController extends AppController
{
public function index()
{
// 変数をテンプレートに渡す
$this->set('message', 'こんにちは、CakePHP!');
// 配列も渡せる
$this->set('data', [
'title' => 'CakePHPのテンプレート',
'description' => 'CakePHPのrenderで値を渡す方法'
]);
// 指定したテンプレートをレンダリング
$this->render('custom_template');
}
}
このコードでは、set('message', 'こんにちは、CakePHP!')のように値を設定し、ビュー側で使用できるようにしています。
2. ビュー(テンプレート)側の記述
set()で渡した変数は、指定したテンプレートファイル内で使用できます。
テンプレート(templates/Example/custom_template.php)
phpコピーする編集する<h1><?= h($message) ?></h1>
<p>タイトル: <?= h($data['title']) ?></p>
<p>説明: <?= h($data['description']) ?></p>
このように、コントローラーで設定した変数をテンプレート側で展開できます。
3. compact()を使って一括で渡す
compact()関数を使うと、複数の変数を配列として一括で渡すことができます。
コントローラーの記述
phpコピーする編集するpublic function index()
{
$message = 'こんにちは、CakePHP!';
$title = 'CakePHPのテンプレート';
$description = 'CakePHPのrenderで値を渡す方法';
// compact() を使うと複数の変数をまとめて渡せる
$this->set(compact('message', 'title', 'description'));
// テンプレートを指定
$this->render('custom_template');
}
この方法を使うと、個別にset()を呼び出す手間が省け、可読性が向上します。
4. render()の使い方
CakePHPのrender()メソッドは、指定したテンプレートを表示する役割を持ちます。
render()の動作
| 記述方法 | 動作 |
|---|---|
$this->render(); | アクション名と同じテンプレートを自動で使用(例: index()ならtemplates/Example/index.php) |
$this->render('custom_template'); | 指定したテンプレート(例: templates/Example/custom_template.php)を使用 |
デフォルトでは、render()を明示的に指定しなくても、アクション名と同じテンプレートが表示されます。しかし、カスタムのテンプレートを指定したい場合は$this->render('custom_template');のように記述します。
5. まとめ
| 方法 | 書き方 | 特徴 |
|---|---|---|
| 単一の変数を渡す | $this->set('変数名', 値); | 変数を1つずつ渡せる |
| 配列を渡す | $this->set('変数名', ['key' => 'value']); | 配列をビューに渡せる |
| compact() を使う | $this->set(compact('var1', 'var2')); | 複数の変数をまとめて渡せる |
このように、CakePHPではset()を活用して、コントローラーからビューへ簡単にデータを渡すことができます。compact()を使うことで、可読性を向上させつつ、スムーズにデータを管理できます。
CakePHPのテンプレートを柔軟に扱えるようになり、より効率的な開発が可能になります。
コメントを残す