よんどころなき事情により、MODXに
cfFormMailerを設置するテストを行いました。
今回の条件は下記
- 比較的シンプルなフォーム
- ファイルアップロードなし
- ログ記録もなし
ということで、基本的にはマニュアルの通りなのですが、ファイル構成がマニュアルとは若干代わっていたのでメモしておきます。
設置方法
- Githubからzipをダウンロード
- zipを解凍
- FTP接続など何らかの方法でMODX設置サーバへアクセスし、
/assets/snippets/
ディレクトリ内に2.で解凍したファイルの/assets/snippets/
内にあるcfFormMailer
フォルダを丸ごとアップロード - MODXの管理画面にログインし、以下の情報で新規スニペットを作成
- スニペット名:
cfFormMailer
- コード: 2.で解凍したファイルのうち、ディレクトリ直下の
snippet.cfFormMailer.php
の内容を丸ごとコピペ
- 環境設定として使用する設定をチャンクとして作成
- チャンク名: 任意(例:
cfFormMailerConfig
) - コード: 2.で解凍したファイルのうち、
chunk_sample
ディレクトリ内のconfig_chunk.txt
の内容を丸ごとコピペ
- お問い合わせ用のリソースをコンテナとして作成(デザインテンプレート指定)
- 6.で作成したリソースのサブリソースとして以下のリソースを作成
- 親リソース
- 本文にスニペットコールを記述。設定読み込みのため、チャンク名を
config
パラメータとして指定する。例えば、[!cfFormMailer?&config=
cfFormMailerConfig!]
- フォーム本体
form
タグのaction
属性はMODXのリソースIDを指定する。例えば、<form method="post" action="[~[*id*]~]">
といった具合- エラーメッセージは、全体で出すメッセージは
<iferror>
で括る。例えば、<iferror><p>フォーム内の入力で誤りがあります。<br>訂正して再度送信ボタンを押してください。</p></iferror>
といった具合 - フォームの各項目について
- 必須チェックは
input
タグの属性としてvalid="1"
を指定 - 必須チェックのエラーメッセージは
<iferror.(NAME)>
で括る。NAME
はinput
タグのname
属性の値。例えば、<input type="text" name="onamae" placeholder="お名前" valid="1">
に対しては、<iferror.(onamae)><p class="error">※お名前を入力してください</p></iferror>
といった具合 - フォームの各項目は、上記の必須チェックなどを除けば普通の静的サイトと同じコーディングと同じ
- 確認画面
- フォームで入力した値はMODXのプレースホルダで
name
の値を指定。上記の<input type="text" name="onamae" placeholder="お名前" valid="1">
に対しては[+onamae+]
- 送信に進む場合も元に戻る場合も
form
タグで指定。action
属性はフォーム本体と同じ。- 戻るボタンは
name
属性の値をreturn
とする - 例えば
<form action="[~[*id*]~]" method="post"><input type="submit" value="送信する"></form> <form action="[~[*id*]~]" method="post"><input type="submit" name="return" value="戻る"></form>
といった具合
- 送信完了画面
- 管理者宛メールテンプレート
- メールテンプレートは管理者宛も自動返信もリソースの本文に入力した内容がメール本文になる
- こちらもフォームで入力した値はMODXのプレースホルダで指定。確認画面と同じ。
`となる
- 自動返信メールテンプレート
- これらのサブリソースはいずれもデザイン
(blank)
で指定なし
- 5.のチャンクのコード(=設定内容)のうち宛先メールアドレスなどを実際の内容に編集
- 設定できる項目はcfFormMailerマニュアル v1.3を参照
- フォーム本体、確認画面、送信完了画面、管理者宛メールテンプレート、自動返信メールテンプレートは7.で作成したリソースIDを
=
の右側に入力して保存すると反映される
備考
2014年6月くらいに一度試した際は、下記条件を満たすとリセットボタンの中の文字列(
input
タグの
value
の値)が消えるというバグがありました。
- 入力必須フィールドを入力しなかったためエラーになった場合
- ちゃんと入力し内容確認ページに進んだ後に「戻る」ボタンで戻った場合
が、Githubのコミットログを見たところ
2016年8月15日の変更で本体がそのバグに対応しており、今回実験した際はそのバグは改称されていました。
念のため合わせてメモ。
参考