====== メールフォーム ======
===== 概要 =====
フォームに入力した内容をメールで送るプログラムです。webサイトのお問い合わせ受付画面などに利用できます。
{{:samples:mailform_index.png|}}
===== パス =====
examples_controller
===== 構成ファイル =====
^ ファイル名 ^ 説明 ^
| index.rb | コントローラ使用のためのエントリポイント。 |
| mailform/_contact.html | お問い合わせ受付画面の部分テンプレート |
| mailform/_thanks.html | お問い合わせを受付完了画面の部分テンプレート |
| mailform/layout.html | 各画面共通のレイアウトを定義するための部分テンプレート |
| mailform/main.rb | コントローラ |
| mailform/styles/ | テンプレートから読み込む |
===== 使用ライブラリ =====
^ ライブラリ名 ^ 説明 ^
| al_controller | コントローラクラス。コントローラアプローチで開発を行うために必要。|
| al_template | テンプレートマネージャ。レスポンスとしてwebブラウザに送信するためのHTMLを生成します。 |
| al_form | フォームマネージャ。ブラウザから送信されたフォームデータの処理などを行います |
===== 詳細 =====
===== コントローラ(hello/main.rb)でのフォームの処理 =====
==== AlFormオブジェクトとAlWidgetオブジェクト ====
Aloneでフォームを表示したりクライアントから送信されたデータを受け取ったりするには、AlFormオブジェクトとAlWidgetオブジェクトを作成します。AlFormは一つのフォームに対応し、フォーム内のテキストボックスやセレクトボックスなどに対応するAlWidgetのサブクラスのオブジェクトを複数保持します。AloneではAlWidgetであらかじめ定義されたフォーム要素以外は受け取ることができません。これによりプログラマが想定していないデータを送り込まれることを防ぐことができ、セキュリティを高めることができます。
メールフォームサンプルでは、make_contact_formメソッドでこれらのオブジェクトを作成しています。
def make_contact_form
form = AlForm.new
form.set_widgets(
AlText.new('name', :label => 'お名前', :required => true, :tag_attr => {:size => 20}),
AlMail.new('mail', :label => 'メールアドレス', :required => true, :tag_attr => {:size => 40}),
AlText.new('company', :label => '会社・団体名', :required => false, :tag_attr => {:size => 40}),
AlText.new('phone', :label => '電話番号', :required => false, :tag_attr => {:size => 14}),
AlText.new('subject', :label => '件名', :required => true, :tag_attr => {:size => 40}),
AlTextArea.new('message', :label => '内容', :required => true, :cols => 40, :rows => 8),
AlSubmit.new('submit', :value => '問い合わせ送信')
)
return form
end
==== フォームの表示 ====
フォームを構成するHTMLをビューで生成するには、