Ja:EForm

From MODx Wiki

Jump to: navigation, search

メイン > スニペット > eForm


Eform Logo
Eform Logo

 MODx Snippet 

eForm v1.4.3
Author 
TobyL
MODx Versions 
>= 0.9.5
Last Updated 
1/7/2007
eFormは、Webフォームからのメール送信を行うための柔軟性の高いフォームパーサスニペットです。スニペットやフォームで指定したユーザにメールを送信することができます。eFormには次のような注目すべき特徴があります。
  • 強力なバリデーションルールを使用したフォームの検証
  • 不正に対するhiddenフィールドの保護
  • CAPTCHAサポート
  • 添付ファイル付きのHTMLメールのサポート
  • プレイスホルダによる柔軟なレポートとページの生成
  • モバイル・携帯への通知
  • 自動返信メール
  • CC、BCCフィールドのサポート

eFormには、パッケージに詳細なドキュメントが含まれています。

ダウンロード

MODxリポジトリのeFormlatest versionからダウンロードしてください。

インストール

  • ZIPファイルをassets/snippet/フォルダに展開します。
  • eFormという名前で新しいスニペットを作成し、eform.snippet.tplの内容をコピー&ペーストします。
  • eform/docs/eform.htmとサンプルをご覧ください。
  • MOdxのページ(ドキュメント・フォルダ)に、必要なパラメータを付け加えたeFormのスニペットコールを書きます。

使い方

パラメータ

  • &formid - 必須
    • ページ上のフォームのID。スニペットで管理するために使います。 例: <form id="formid">
  • &tpl - 必須
    • テンプレートとして使うチャンク名かドキュメントID。
  • &report - 必須
    • レポート作成のためのテンプレートとして使うチャンク名かドキュメントID。&noemailパラメータを使う場合は、このパラメータは必須ではありません。

さらに...

イベント

eFormOnBeforeFormParse

フォームがパースされる直前に呼び出されます。フォームからPOSTされた妥当なデータ($_POST)ある場合にのみ、パースが行われます。

eFormOnValidate

ビルトインのバリデーションがパースされた後に呼び出されます。バリデーションの拡張に使います。

eFormOnBeforeMailSent

メッセージが送信される前に呼び出されます。このイベントは&noemailが設定されているかどうかに関わらず呼び出されます。

eFormOnMailSent

メッセージを送信した後に呼び出されます。&toが設定されていない場合、またはメールアドレスが正しくない場合、このイベントは呼び出されません。

eFormOnBeforeFormMerge

フォームがクライアントブラウザに出力される前に呼び出される、最後のイベントです。

サンプル

eFormフォーム

シンプルな問い合わせフォームのチャンク

<p class="error">[+validationmessage+]</p>
 
<form method="post" action="[~[*id*]~]" id="EmailForm" name="EmailForm">
 
	<fieldset>
		<h3>お問い合わせ</h3>
 
		<input name="formid" type="hidden" value="ContactForm" />
 
		<label for="cfName">お名前:
		<p><input name="name" id="cfName" class="text" type="text" eform="お名前::1:" /></p></label>
 
		<label for="cfEmail">メールアドレス:
		<p><input name="email" id="cfEmail" class="text" type="text" eform="メールアドレス:email:1" /></p> </label>
 
		<label for="cfRegarding">件名:
		<p><input name="subject" id="cfRegarding" class="text" type="text" eform="件名::1" /></p> </label>
 
		<label for="cfMessage">メッセージ:
		<p><textarea name="message" id="cfMessage" eform="メッセージ:textarea:1"></textarea></p>
		</label>
 
		<label>&nbsp;</label><p><input type="submit" name="contact" id="cfContact" class="button" value="送信" /></p>
 
	</fieldset>
 
</form>
--ScottyDelicious 16:00, 5 December 2006 (PST)

eFormレポート

シンプルなレポートのチャンク

<p>これは、このWebサイトのフィードバックフォームを使って<b>[+name+]</b>から寄せられた反響です。メッセージの詳細は次の通りです。</p>
 
<p>名前: [+name+]</p>
<p>e-mail: [+email+]</p>
<p>件名: [+subject+]</p>
<p>コメント:<br />[+message+]</p>
 
<p>次のリンクから返信することができます: <a href="mailto:[+email+]?subject=RE: [+subject+]">[+email+]</a></p>
--ScottyDelicious 16:00, 5 December 2006 (PST)

eFormのスニペットコール

[!eForm? &formid=`ContactForm` &subject=`[+subject+]` &to=`you@youremail.com` 
&ccsender=`1` &tpl=`ContactForm` &report=`ContactFormReport` &gotoid=`1`  !]


FlashフォームとeForm

eFormは、Flashフォームを通して送信されたデータを処理することができます。 Flashフォーム内の全てのフィールドをチャンクテンプレート(tpl)に定義します。 FlashフォームのフォームID(formid)フィールドに適切な名前を追加し、eFormのスニペットコールがあるページのフォームにデータを送信(POST)します。 eFormとFlashでファイルのアップロードも管理することができます。そのためには、次のようなコードを使って、Flashから1回で全てのデータを送信する必要があるでしょう。

var postData:String = "";
postData += "action=index.php?id=<eFormPage>";
postData += "&name="+escape(Util.trim(input_name.text));
 
fileRef["postData"] = postData;
fileRef.upload(url);

Flashに送信の成功を通知するために、eFormのレポートをXMLドキュメントとして出力することができます。

<root>
<success>1</success>
</root>

ノート

  • フォームの出力(tplパラメータ)にチャンクではなくテンプレートを使用する場合は、テンプレートの「リッチテキスト」の設定を無効にしてください。さもなければ、最初にeFormのフォームを編集する際に、eFormで使われる擬似的なeform属性(eform="~")の全てが削除されてしまうでしょう。
  • スニペットコールの引用符はシングルクォーテーションではなくバッククォートです。シングルクォーテーションを使うと、"テンプレートのためのドキュメント、またはチャンクが見つかりません。"という旨のエラーを発生させるでしょう。

リソース

Personal tools