SEARCH

このマニュアルはSmartyのものです。セキュリティなどの問題でRCMSでは利用できないものもありますので、ご注意ください。
変数

第 4章変数

Smarty は色々な種類の変数を持っています。変数の種類は接頭辞の記号によって決まります (記号によって囲まれる場合もあります)。

Smarty 変数は、その値を直接表示したり 関数 の引数や 属性修飾子、 そして条件式の内部などで使用されたりします。 変数の値を表示するには、それを単純に デリミタ で囲み、デリミタ内に変数のみが含まれるようにします。

例 4-1. 変数の例

{$Name}

{$product.part_no} <b>{$product.description}</b>

{$Contacts[row].Phone}

<body bgcolor="{#bgcolor#}">

ヒント: Smarty 変数の値を手っ取り早く調べるには、 デバッギングコンソール を使用するとよいでしょう。

PHP から割り当てられた変数

PHP から 割り当てられた 変数は、 (php と同様に) 先頭にドル記号 ($) をつける事で参照できます。 テンプレート内で {assign} 関数を用いて割り当てられた変数もこの方法で表示されます。

例 4-2. 割り当てられた変数

php script

<?php

$smarty 
= new Smarty();

$smarty->assign('firstname''Doug');
$smarty->assign('lastname''Evans');
$smarty->assign('meetingPlace''New York');

$smarty->display('index.tpl');

?>

一方、index.tpl の内容はこのようになります。

Hello {$firstname} {$lastname}, glad to see you can make it.
<br />
{* これは動作しません。変数名は大文字小文字を区別するからです。 *}
This weeks meeting is in {$meetingplace}.
{* こちらは動作します *}
This weeks meeting is in {$meetingPlace}.

出力は次のようになります。

Hello Doug Evans, glad to see you can make it.
<br />
This weeks meeting is in .
This weeks meeting is in New York.

連想配列

PHP から割り当てられた連想配列を参照することもできます。 この場合は、'.' (ピリオド) 記号の後にキーを指定します。

例 4-3. 連想配列の値にアクセスする

<?php
$smarty
->assign('Contacts',
    array(
'fax' => '555-222-9876',
          
'email' => 'zaphod@slartibartfast.example.com',
          
'phone' => array('home' => '555-444-3333',
                           
'cell' => '555-111-1234')
                           )
         );
$smarty->display('index.tpl');
?>

一方、index.tpl の内容はこのようになります。

{$Contacts.fax}<br />
{$Contacts.email}<br />
{* you can print arrays of arrays as well *}
{$Contacts.phone.home}<br />
{$Contacts.phone.cell}<br />

出力は次のようになります。

555-222-9876<br />
zaphod@slartibartfast.example.com<br />
555-444-3333<br />
555-111-1234<br />

配列のインデックス

配列に対してインデックスでアクセスすることもできます。 これは PHP 本来の構文と同じです。

例 4-4. インデックスによって配列にアクセスする

<?php
$smarty
->assign('Contacts', array(
                           
'555-222-9876',
                           
'zaphod@slartibartfast.example.com',
                            array(
'555-444-3333',
                                  
'555-111-1234')
                            ));
$smarty->display('index.tpl');
?>

一方、index.tpl の内容はこのようになります。

{$Contacts[0]}<br />
{$Contacts[1]}<br />
{* you can print arrays of arrays as well *}
{$Contacts[2][0]}<br />
{$Contacts[2][1]}<br />

出力は次のようになります。

555-222-9876<br />
zaphod@slartibartfast.example.com<br />
555-444-3333<br />
555-111-1234<br />

オブジェクト

PHP から割り当てられた オブジェクト のプロパティにアクセスするには、-> 記号の後にプロパティ名を指定します。

例 4-5. オブジェクトのプロパティにアクセスする

name:  {$person->name}<br />
email: {$person->email}<br />

出力は次のようになります。

name:  Zaphod Beeblebrox<br />
email: zaphod@slartibartfast.example.com<br />

SEARCH