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');