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のテンプレートを柔軟に扱えるようになり、より効率的な開発が可能になります。