eFormにリソース変数やテンプレート変数の値を引き渡す

(posted at: 2015-05-15)

動的な値を eForm に埋め込みたい場合

「商品ごとに問い合わせやカタログ申し込みを eForm を使って受け付けたい。」

そのような場合、フォーム本体をチャンク化して呼び出し、たとえば「リソース名」の値を hidden で eForm に引き渡し、商品名や商品番号をメール送信できるようにしたくなる。

だが単純に、 <input type="hidden" value="[*pagetitle*]".....>としてしまっては、入力エラーがあった場合、
「はて、困った」
ということになり、途方に暮れてしまうことになる。

[undefined] » 不正な変更の試みを発見しました!

これが出力されるエラーだ。ソースコードを見ると、たとえば下記のように出力されている。

<input type="hidden" class="invalid" value="contact">

invalid class にこのエラーは対応しているようだ。このエラーは、フォーム本体をチャンク化し、たとえば「&tpl = `eFormBody`」と指定している際に発生してしまう。リソースとしてフォーム本体を登録し、リソースID指定している場合には発生しない。

詳しい処理的なことや技術的なことまでは調査できていないが、リソース変数 [*pagetitle*]が、処理の途上で [ *pagetitle* ]とされてしまっているのが原因らしい。

回避方法

試行錯誤の結果、一つの回避方法を発見することができた。たとえば、埋め込みたいコードが下記の場合、

<input type="hidden" value="[*pagetitle*]".....>

そのコードをチャンクとして登録し、そのチャンクをフォームより呼び出すようにすればよい。