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*]".....>
そのコードをチャンクとして登録し、そのチャンクをフォームより呼び出すようにすればよい。