第5回 Smartyを使って実用的なページを作ってみる(その1) - Smarty講座
yossy先生のSmarty講座
Lecutures on PHP
第5回 Smartyを使って実用的なページを作ってみる(その1) (その2)
入力画面を作る

次に問い合わせ内容をユーザーに入力してもらうためのフォームページを作成します。また、Smartyオブジェクトを取得する処理は他のPHPからも共通で利用するので、別ファイルで用意します(*2)。ここではcommon.phpというファイル名とします。
form.php
<?php
// 共通の設定を読み込む
require_once( 'common.php' );
// Smartyオブジェクト取得
$smarty =& getSmartyObj();
// ひな形のSmartyテンプレートでincludeするテンプレートを指定
$smarty->assign( 'content_tpl', 'form.tpl' );
// パラメータを渡す
$smarty->assign( 'params', array(
'types' => array(
'request' => '意見、要望',
'question' => '質問、問い合わせ',
'other' => 'その他'
)
) );
// ページを表示する
$smarty->display( 'template.tpl' );
?>
common.php
<?php
define( 'SMARTY_DIR', '/usr/local/lib/Smarty-2.6.18/libs/' );
require_once( SMARTY_DIR .'Smarty.class.php' );
// Smartyオブジェクト取得
function & getSmartyObj()
{
static $smarty = null;
if( is_null( $smarty ) ){
$smarty = new Smarty();
$smarty->template_dir = '/var/www/smarty/templates/';
$smarty->compile_dir = '/var/www/smarty/templates_c/';
$smarty->config_dir = '/var/www/smarty/configs/';
$smarty->cache_dir = '/var/www/smarty/cache/';
}
return $smarty;
}
?>
インクルードするテンプレートファイルとしてform.tplを指定しています。パラメータはお問い合わせ種類のセレクトボックスの選択項目を渡しています。
続いてインクルードするテンプレートファイルform.tplを作成します。ここにはフォームの中身を記述します。
form.tpl
<p>お問い合わせやご意見・ご要望を以下のフォームにご記入の上ご送信ください。</p>
<form method="post" action="post.php">
<dl>
<dt>お名前</dt>
<dd><input type="text" name="name" value="" /></dd>
<dt>メールアドレス</dt>
<dd><input type="text" name="address" value="" /></dd>
<dt>お問い合わせ種類</dt>
<dd>
{html_options name="type" options=$params.types}
</dd>
<dt>お問い合わせ件名</dt>
<dd><input type="text" name="title" value="" /></dd>
<dt>お問い合わせ内容</dt>
<dd><textarea name="content" cols="60" rows="5"></textarea></dd>
</dl>
<input type="submit" value="送信する" />
</form>
お問い合わせ種類で用いている{html_options}はカスタム関数で、options属性に与えられた配列からリストボックスを表示するselect,optionタグを生成します。ここではPHPから渡されたパラメータ$params.typesから生成しています。
------
*2)外部からアクセスされる恐れがあるので、できればWebサーバーのDocumentRoot以外のパスに配置してください。





ページのトップへ


今回のような実践的な経験がエンジニアのキャリアに繋がると思います。是非サービスを成功させて下さい!