トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

PHP/Smarty/サンプル の変更点

Top / PHP / Smarty / サンプル

[[[PHP/Smarty]]]



-[[[@IT]今から始める MySQL入門「Smartyでテンプレートエンジンの威力を知る」>http://www.atmarkit.co.jp/flinux/rensai/mysql5_12/mysql5_12a.html]]



*通常配列の表示例
foo.php
 <?php
 // Smartyライブラリ読み込み
 define('SMARTY_DIR', '/usr/local/lib/smarty/');
 require_once(SMARTY_DIR . 'Smarty.class.php');
 
 // Smartyのインスタンスを作成
 $smarty = new Smarty();
 
 // 各ディレクトリの指定
 $smarty->template_dir = './templates/';
 $smarty->compile_dir = './templates_c/';
 $smarty->config_dir = './configs/';
 $smarty->cache_dir = './cache/';
 
 // キャッシュ機能の有効化
 $smarty->caching = true;
 
 // テンプレートの変数に値を割り当てる
 $smarty->assign('title', '名簿');
 
 $address_book = array('山田太郎', '鈴木二郎');
 $smarty->assign('address', $address_book);
 
 // テンプレートを指定し表示
 $smarty->display('foo.tpl');
 ?>



foo.tpl
 <html lang='ja'>
 <head>
 <meta http-equiv='content-type' content='text/html; charset=UTF-8'>
 <title>{$title|escape}</title>
 </head>
 <body text='black' bgcolor='white'>
 {* テンプレート中のコメント *}
 
 <!-- タイトル -->
 <h1>{$title|escape}</h1>
 
 <!-- テンプレートへの埋め込み -->
 <div align='center'>
 <ul>
 	{foreach from=$address_book item=value name=loop01}
 		<li>{$value|escape}</li>
 	{foreachelse}
 		<li>表示させるデータがありません。</li>
 	{/foreach}
 </ul>
 </div>
 
 </body>
 </html>



*連想配列の配列表示例
foo.php
 <?php
 // Smartyライブラリ読み込み
 define('SMARTY_DIR', '/usr/local/lib/smarty/');
 require_once(SMARTY_DIR . 'Smarty.class.php');
 
 // Smartyのインスタンスを作成
 $smarty = new Smarty();
 
 // 各ディレクトリの指定
 $smarty->template_dir = './templates/';
 $smarty->compile_dir = './templates_c/';
 $smarty->config_dir = './configs/';
 $smarty->cache_dir = './cache/';
 
 // キャッシュ機能の有効化
 $smarty->caching = true;
 
 // テンプレートの変数に値を割り当てる
 $smarty->assign('title', '名簿');
 
 $address_book = array(
 	array('name' => '山田太郎',
 		'fax' => '03-1111-1112',
 		'phone' => array('03-1111-1111', '080-2222-1111'));
 	array('name' => '鈴木二郎',
 		'fax' => '03-2222-1112',
 		'phone' => array('03-2222-1111', '080-2222-1111'));
 $smarty->assign('address', $address_book);
 
 // テンプレートを指定し表示
 $smarty->display('foo.tpl');
 ?>



foo.tpl
 <html lang='ja'>
 <head>
 <meta http-equiv='content-type' content='text/html; charset=UTF-8'>
 <title>{$title|escape}</title>
 </head>
 <body text='black' bgcolor='white'>
 {* テンプレート中のコメント *}
 
 <!-- タイトル -->
 <h1>{$title|escape}</h1>
 
 <!-- テンプレートへの埋め込み -->
 <div align='center'>
 <table border="1">
 	<tr>
 	{foreach from=$address_book item=row name=loop01}
 		{foreach from=$row key=key item=value name=loop02}
			<th>$key|escape</th><td>{$value|escape}</td>
 		{/foreach}
 	{foreachelse}
 		<th></th><td>表示させるデータがありません。</td>
 	{/foreach}
 	</tr>
 </table>
 </div>
 
 </body>
 </html>



データが無いときにtableタグを使いたくない場合は、foreachelseを使わず次のようにif分で判定します。
 {if is_array($address_book) && count($address_book) > 0)
 	<table border="1">
 		<tr>
 		{foreach from=$address_book item=row name=loop01}
 			{foreach from=$row key=key item=value name=loop02}
				<th>$key|escape</th><td>{$value|escape}</td>
 			{/foreach}
 		{foreachelse}
 			<th></th><td></td>
 		{/foreach}
 		</tr>
 	</table>
 {else}
 	表示させるデータがありません。
 {/if}