Smarty の変数と連想配列

Smarty で、PHP から割り当てられた変数は、先頭にドル記号 $ をつける事で参照できます。テンプレート内では、assign 関数によって割り当てられた変数も $ をつける事で参照できます。
PHP から割り当てられた連想配列は、$ のついた配列変数にピリオドをつけ、キーを指定することで参照することができます。
関連した変数は、連想配列にまとめると、PHP の assign は、連想配列変数を1回指定するだけで済みます。

Smarty 変数のサンプルとソースコード

PHP から Smarty に割り当てる変数と連想配列のサンプルを作りました。使い方の理解に役立ててください。
サンプル: Smarty 変数と連想配列のサンプル
このサンプルのソースコードは、次の通りです。

var_smarty.php のソースコード

<?php
// Smarty 変数と連想配列のサンプル
if (!@include_once('Smarty.class.php')){
    @include_once('Smarty/Smarty.class.php');
}
//通常は、require_once('Smarty.class.php');だけでOKですが、
// Smarty/Smarty.class.php のサーバーにも対応しました。
//require は、エラーで処理が中断するので include にしました。
$smarty = new Smarty;

$contents = array(
    'title' => '名簿',
    'data' => array(
        1 => array(
            'name' => '太郎',
            'old' => 15,
            ),
        2 => array(
            'name' => '花子',
            'old' => 13,
            )
        )    
    );

$smarty->assign('contents',$contents);
$smarty->display('var_smarty.tpl');
?> 

templates/var_smarty.tpl のソースコード

{* Smarty 変数と連想配列サンプルのテンプレートファイル *}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>Smarty 変数と連想配列サンプル</title>
</head>
<body>
Smarty 変数と連想配列サンプルのサンプルです。<br>
これは、{$contents.title} です。<br>
{$contents.data[1].name} の歳は、{$contents.data[1].old} 才です。<br>
数字キーは、[ ] を利用して、$contents.data[1].name と指定しても、<br>
[ ] を使わないで、$contents.data.2.name と指定しても OK です。<br>
{$contents.data.2.name} の歳は、{$contents.data.2.old} 才です。<br>
<br>
foreach でも利用できます。<br>
<table>
<tr><th>名前</th><th>年齢</th></tr>
{foreach key=key from=$contents.data item=data}
<tr><td>{$data.name}</td><td>{$data.old}</td></tr>
{/foreach}
</table>
<br>
テンプレートの中で assign をつかい、変数を割り当てる例。<br>
{assign var="name" value="良夫"}
$name の内容は、{$name} です。
</body>

Smarty 変数の注意事項

PHP から Smarty に $smarty->assign で渡すときの変数名は、サンプルのように PHP 側と Smarty 側で、同じ名前にしても大丈夫です。
テンプレートファイル内で foreach を利用する場合は、from と item の変数名は同じにしてはいけません。同じにすると、元の変数の内容が壊れて foreach の後のスクリプトでは使えなくなります。

PR amazon

author

サイト管理人:パワーデジット
管理人への連絡フォーム

スポンサード リンク

このページは 

トップページ > PHP > Smarty > 変数