actionで設定した変数をlayout.phpで使用することは出来ません。
使用するにはスロットを使います。
もともとは例えばサイドバーの内容をaction毎に切り替えたりする場合に使います。
まずlayout.phpに
そして、この内容を上書きたいactionのテンプレートで
これでこのaction実行時にはこの内容が表示されます。
layout.phpにデフォルトのスロット(else以下)を設定しなければ、slotが存在しなければ何も出ないので、これを使えばactionの変数をlayout.phpで使えるます。
使用するにはスロットを使います。
もともとは例えばサイドバーの内容をaction毎に切り替えたりする場合に使います。
まずlayout.phpに
<?php if (has_slot('slot')): ?>
<?php include_slot('slot') ?>
<?php else: ?>
ここにデフォルトのものを入れる。
actionの変数はここでは使えません。
<?php endif; ?>
そして、この内容を上書きたいactionのテンプレートで
<?php slot('slot') ?>
ここに内容を書く。
ここでは当然actionの変数が使えます。
<?php end_slot() ?>
これでこのaction実行時にはこの内容が表示されます。
layout.phpにデフォルトのスロット(else以下)を設定しなければ、slotが存在しなければ何も出ないので、これを使えばactionの変数をlayout.phpで使えるます。
symfonyでmeta情報の動的な設定方法
モジュールのアクションクラスで
//title属性\\
$this->getResponse()->setTitle($value);
//meta属性
$this->getResponse()->addHttpMeta($key, $value)
$this->getResponse()->addMeta($key, $value)
のように設定すればページごとにmeta情報を動的に生成することが可能です。
たとえば以下のように設定したい場合は
title→テスト
description→概要
keywords→PHP,MySQL
$this->getResponse()->setTitle('テスト');
$this->getResponse()->addMeta('description','概要');
$this->getResponse()->addMeta('keywords', 'PHP, MySQL');