PHPで配列を定数定義→assignしないでSmartyで取得する荒業できたよー
PHPではdefineで配列が使えないので、定数として配列を使いたいときは
- $GLOBALを使う
- クラスを作る
- 気にしないで普通の配列を使う
という方法があるかと思います。
が、上記の方法を使った場合、基本はPHP側で$smarty->assignしなければなりません。defineで定義した定数なら$smarty.constで一発なのに…。かといって{php}コードを使う方法は何かに負けた気がします。
そこで、ネットをさまよったところ、配列をシリアライズしてdefineで定義→Smarty側でアンシリアライズして利用、という方法を発見しました。
PHP側
define("CONF_ARRAY" => serialize( array('foo' => 'ふー', 'bar' => 'ばー', 'baz' => 'ばず') ));
{assign var=CONF_ARRAY value=$smarty.const.CONF_ARRAY|unserialize} {$CONF_ARRAY|@debug_print_var}
[参考]