第5回 Smartyを使って実用的なページを作ってみる(その1) - Smarty講座

PHP基礎編

yossy先生のSmarty講座

Lecutures on PHP

第5回 Smartyを使って実用的なページを作ってみる(その1) (その4)

 このエントリーをはてなブックマークに追加

エラー処理を考える

さて、バリデーションに失敗した場合のエラー処理ですが、先ほど作成したform.tplを以下のように書き換えます。

form.tpl

<p>お問い合わせやご意見・ご要望を以下のフォームにご記入の上ご送信ください。</p>

<
form method="post" action="post.php">
<
dl>
  <
dt>お名前</dt>
  <
dd>
    <
input type="text" name="name" 
           value="{$params.name|escape:'html':'UTF-8'}" />
{if 
$params.errors.name}
    <
class="error-message">名前を入力してください。</p>
{/if}
  </
dd>
   
  <
dt>メールアドレス</dt>
  <
dd>
    <
input type="text" name="address" 
           value="{$params.address|escape:'html':'UTF-8'}" />
{if 
$params.errors.address}
    <
class="error-message">アドレスが不正です。</p>
{/if}
  </
dd>

  <
dt>お問い合わせ種類</dt>
  <
dd>
    {
html_options name="type" options=$params.types selected=$params.type}
{if 
$params.errors.type}
    <
class="error-message">お問い合わせ種類が不正です。</p>
{/if}
  </
dd>
   
  <
dt>お問い合わせ件名</dt>
  <
dd>
    <
input type="text" name="title" 
           value="{$params.title|escape:'html':'UTF-8'}" />
{if 
$params.errors.title}
    <
class="error-message">件名を入力してください。</p>
{/if}
  </
dd>
   
  <
dt>お問い合わせ内容</dt>
  <
dd>
    <
textarea name="content" cols="60" rows="5">
      {
$params.content|escape:'html':'UTF-8'}
    </
textarea>
{if 
$params.errors.content}
    <
class="error-message">お問い合わせ内容を入力してください。</p>
{/if}
  </
dd>
</
dl>

<
input type="submit" value="送信する" />
</
form>

まず、各項目のinputタグやtextareaタグの値を設定しています。これは最初にPOSTした値が格納されるようにするためです。POST前にアクセスした場合は空値となります。上記のpost.tplと同様、修飾子escapeを用いていることを確認してください。

次に、各項目の下部に{if}が書かれています。これはバリデーションエラーがあった項目に関してはエラーメッセージを表示する制御を行っています。

問い合わせ入力フォーム

ここまでで、問い合わせフォームの完成です。実際にアクセスしてみて問い合わせ内容を入力してみましょう。
正しく送信完了画面が出力されましたでしょうか?

問い合わせ完了画面

さて第5回はここまでです。Smartyを使って実際に動くページを作ってみた感想はいかがでしょうか?
次回も実際のサイト構築場面を想定したSmartyの使い方を紹介したいと思います。

  • yossy先生

本名:吉武 正史

パッケージ系ソフトウェア会社で、自然言語処理系の研究やWebアプリケーション、検索連動型広告などの開発に従事。 2006年末にフリーランスとして独立し、現在はPHPによるWeb開発の業務を中心に、コンサルティングや執筆活動などを展開。
サイトURL:http://freeative.jp/

ご意見・感想フォーム

今回の「yossy先生のSmarty講座」への評価・ご意見があればご記入下さい。

評価:
ご意見・感想:

  



Pick Up Q&A

Q
負荷時のmysql_connect()エラー
 このエントリーをはてなブックマークに追加 
A
これはPHPというよりOSまたはMySQLのコミュニティで質問されたほうがいいと思います。 ぱっと思いついた範囲で記すと MySQL等のDBに「ある時点において同時に接続可能なクライアントの最大数」に制限があるよう...

>>続きを読む

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

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)