変数を代入する際には、メイン Smarty オブジェクト、
createData()
で作ったデータオブジェクト、
createTemplate()
で作ったテンプレートオブジェクト
のいずれかのスコープを選ぶことができます。
これらのオブジェクトは連結することができます。
テンプレートからは、自分自身のオブジェクトの変数だけでなく
連結した親オブジェクトに代入された変数も見ることができます。
デフォルトでは、$smarty->display(...)
や
$smarty->fetch(...)
でレンダリングしたオブジェクトは自動的に
Smarty オブジェクトの変数スコープにリンクされます。
個々のデータあるいはテンプレートのスコープに代入すれば、 テンプレートからどの変数が見えるのかを完全に制御することができます。
Example 4.6. 変数のスコープの例
// 変数を Smarty オブジェクトのスコープに代入します $smarty->assign('foo','smarty'); // 変数をデータオブジェクトのスコープに代入します $data = $smarty->createData(); $data->assign('foo','data'); $data->assign('bar','bar-data'); // 変数を他のデータオブジェクトのスコープに代入します $data2 = $smarty->createData($data); $data2->assign('bar','bar-data2'); // 変数をテンプレートオブジェクトのスコープに代入します $tpl = $smarty->createTemplate('index.tpl'); $tpl->assign('bar','bar-template'); // 変数を Smarty オブジェクトへのリンクを持つテンプレートオブジェクトのスコープに代入します $tpl2 = $smarty->createTemplate('index.tpl',$smarty); $tpl2->assign('bar','bar-template2'); // この display() は、$smarty オブジェクトの $foo='smarty' が見えます $smarty->display('index.tpl'); // この display() は、データオブジェクト $data の $foo='data' と $bar='bar-data' が見えます $smarty->display('index.tpl',$data); // この display() は、データオブジェクト $data の $foo='data' と // データオブジェクト $data2 の $bar='bar-data2' が見えます $smarty->display('index.tpl',$data2); // この display() は、テンプレートオブジェクト $tpl の $bar='bar-template' が見えます $tpl->display(); // あるいは $smarty->display($tpl); // この display() は、テンプレートオブジェクト $tpl2 の $bar='bar-template2' と // Smarty オブジェクト $foo の $foo='smarty' が見えます $tpl2->display(); // あるいは $smarty->display($tpl2);
assign()
、
createData()
および
createTemplate()
も参照ください。