この記事は技術者向けです。

マイ見積は、問い合わせフォームの拡張として作成しています。通常の問い合わせフォームは

フォーム -> (確認画面) -> 送信

となっていますが、これを

フォーム -> (計算結果表示) -> PDF発行

に変えたものが、マイ見積のフォームになります。

問い合わせフォームと見積フォーム


concrete5ベース

ベースのシステムはconcrete5を採用しました。concrete5を採用した理由はこちらの記事をごらんください。

concrete5では、フォームブロック、外部フォームブロックが用意されています。フォームブロックは高機能で便利ですが、フォームの骨格には不要なコードも多いです。自分でオリジナルフォームを作成する場合は、外部フォームブロックを参考にすると、作りやすいと思います。マイ見積では、フォームの入出力部分は、外部フォームブロックをベースに作成しました。

ブロック編集画面は、フォームブロックのインターフェースよりも、FAQブロックのインターフェースのほうが使いやすい印象を持っていました。なので、FAQブロックのインターフェースをベースにした画面で、フォームを作成できるようにしました。

フォーム編集

フォームの各アイテムに、条件設定を付けることができます。オプションなどがある場合に使います。(たとえば、「独自ドメイン導入」を設定したときだけ、「ドメイン設定代行を依頼する」を表示する、などです。)

この部分(条件分岐フォーム)は、concrete5の機能にはありませんので、独自追加しました。

計算結果表示

見積フォームでは、計算結果がすぐ表示されたほうが、訪問者が見積項目を変更しやすくてよいだろう、という考えから、別画面で確認画面に遷移するのではなく、フォームのすぐ下に計算結果を表示するようにしています。

PDF発行

問い合わせフォームでは送信処理を行いますが、見積フォームではPDF作成と発行を行います。FPDFというPHPのライブラリをベースにしたtFPDFを採用しています。tFPDFはLGPLライセンスで配布されており、UTF-8対応しています。

tFPDFをconcrete5から呼び出しできるように名前空間などの調整を行っています。また日本語フォントにはIPAフォントを採用しています。

見積書サンプル

こうすることで、上のようなPDFを発行できます。