昔、Htmlをガリガリ書いてサイト構築していたときにはフォームメールページというと、submitボタンを押してCGIを呼び出すもの、という方式だったと思う。
CMSを使うようになったからといってその方式が使えなくなるわけではないのだが、CGIでエラー表示などを行う際には、CMSのほうでのデザインに合わせてCGIも調整しなくてはならず、それに何といっても、CGIの部分だけがCMS配下にならないという、大変に気持ちの悪い問題が発生する。
もちろん、CMS側でもモジュールやプラグインが用意されていているのが通常で、たとえばこの「むくどり旋回中」はWordpress製なのだが、contactform7というプラグインを使わせてもらって問合せページをまかなっている。使い方も簡単だし、クラス指定ができるので細かいデザイン調整などもできる。(とはいえ、このサイトではテキストボックスの幅を広げたくらいで後は何にもしてないのだが)
しかし、contactform7に限らず、CMS用に供されているcontactフォームはたいてい舶来(笑)なので、ニッポン標準の「確認画面」が出ないのだ。フォームを埋めてボタンを押すといきなり送信してしまう。金額など、ドキドキしながら入力している場合にはちょっと心臓に悪い。また、結構きめの細かい指定ができるとはいえ、自社業務に固有のエラーチェックや、チェックの際に認証のためのDB問合せを行うなんてことはまず不可能だ。
ここで威力を発揮するのがdrupal。なんといっても通常の文章と同じようにphpのコードを書くこともできるので、全ての処理を1つの「ページ」に書いてしまうこともわりと簡単なのだ。
・formのactionを自分自身に設定する。
・「(1)初期状態」「(2)確認ボタンが押された状態」「(3)送信ボタンが押された状態」という3つの状態を認識してそれぞれで処理を書く。
・以上終わり。
(1)では普通に入力を受け付け、(2)では確認画面を出すと同時に思う存分エラーチェックを行い、(3)のときにメール本文を組み立ててmb_sendmailなぞを呼び出す。という内訳。
もちろん、その問合せページ自体もdrupalで設定しているテーマの管理下に入るので、正味、コンテンツ部分だけを書けばよく、全体デザインはテーマ任せでOK。
Drupalでcontactモジュールを使って複雑なエラーチェックを行いたいと格闘しているかた、あるいは自分好みの確認画面を出したいかたは、案ずるより産むが易し。自作してみるのが一番効率が良かったりして。