Smartyでpreg_matchみたいな事2

2010年5月18日

以前、紹介したが、
参考例として自分も書いたのでコードとして紹介。

foreachと絡めてます。

foreachで次のコードのように配列を渡すと、なんだかregex_replace部分に変数を入れた時にうまくいかなかったので、assignを使って変数化($id)してます。

PHP側

$data = array(
array('id' => 1, 'name' => 'わたし'),
array('id' => 2, 'name' => 'あなた'),
array('id' => 3, 'name' => '誰?')
);
$src_id = ",1,3,";
$smarty->assign('data',$data);
$smarty->assign('src_id',$src_id);

Smartyテンプレート側

{foreach from=$data key=key item=item}
{assign var='id' value=$item.id}
<input type="checkbox" name="id[]" value="{$item.id}"
{if $src_id|regex_replace:"/.*,$id,.*/":'a' eq 'a'}checked{/if}
/>
{$item.name}
{/foreach}