defaultの活用ですね。
やりたいこと
フォームページに遷移する複数のリンクを作ってある。
それぞれ問い合わせ目的が異なるけど、同一のフォームを使う。
リンク事に、アクセス時に自動記入とか自動選択させるようにすれば混乱しなくていいよね。
それを、ContactForm7でやりたい。
input:textとかtextareaだけじゃなくて、radioでもやりたい。
こんな感じ
CF7ではパラメータで指定した内容を項目に挿入できる機能がある(=設定しないと使えない)。
CF7でこんな感じに組む。
[text name default:get]
[radio category default:get default:1 "あああ" "いいい" "ううう" "えええ"]
[textarea comment default:get]URLはこうなる。
contact/
?name=山田太郎
&category=あああ
&comment=おはようございます「default:get」を設定すれば、URLから値を拾ってくれるというわけである。
radioも値が合ってればそれにチェックしてくれる。
radioを必須にしたい場合
CF7にradioを必須にする手段はない。
代わりに、「default:1」のように、初期状態で任意の値を設定済みにできる。
逆に言うと、これがなければ選択してない状態からスタートする。
getから拾いたいからって「default:get」だけにすると、パラメータに指定がなければ入力なしの状態になる。
ここで、defaultを複数指定するという手段がでてくる。
これは公式からも紹介されている方法。
今回は以下のような動作にしたい。
- 何もしてない状態なら最初のradioをチェックする
- パラメータで指定されてたらそっちを優先する
だからこうなる。
[radio category default:get default:1 "あああ" "いいい" "ううう" "えええ"]「default:get」と「default:1」の順番が変わると優先順位も変わる。
というのが注意ポイント。
値を改行させたい場合とか文字化け対策
textareaにテキストを仕込みたい場合、改行が使えるんだから改行したいよね。
でもURLって改行しないよね。
URLに文字列を入れたらバグるというかurlの書式と干渉するとかブラウザの仕様とかで上手くいかない場合がある。嫌だよね。
そういう痒いところや想定外のことへの対策として、URLで使える形へのエンコードがある。
こんな感じにしたいとしたら
contact/
?name=山田太郎
&category=あああ
&comment=おはようございます
本日もよろしくお願いいたしますこうなる。
contact/
?name=%E5%B1%B1%E7%94%B0%E5%A4%AA%E9%83%8E
&category=%E3%81%8A%E3%81%AF%E3%82%88%E3%81%86%E3%81%94%E3%81%96%E3%81%84%E3%81%BE%E3%81%99
&comment=%E3%81%8A%E3%81%AF%E3%82%88%E3%81%86%E3%81%94%E3%81%96%E3%81%84%E3%81%BE%E3%81%99%0D%0A%E6%9C%AC%E6%97%A5%E3%82%82%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99良かったですね

コメント