質問

投稿者:PB重岡 2022年7月1日(金)

同じフォームブロックをマイエリアとマイエリア外両方で利用する方法について

既存の会員サイトの会員及び非会員を対象にした先着500名で締め切るキャンペーンフォームを作成しています。 会員はログインした後に既に登録済みの情報を入力せずに回答、非会員はすべて入力してえ回答させたいと考えています。 サポートのクリックログインアンケート(https://support.spiral-platform.com/frompurpose/6919.html)を見る限りだとフォームを分けて作成する必要がありそうなのですが会員、非会員合算で500名で自動締切に対応したく、同一フォームで記載の仕様を実現する方法はありますでしょうか?

  • 1
  • 引用する
  • SPIRERS
    ナレッジ
    向上チーム

    認証あり/認証なしのページそれぞれで、ログインしている/していないという値をPHPで渡し、 値によって登録フォームブロック内でタグを出し分けることで対応可能です。 ・認証ありページのPHP <?php $SPIRAL->setTHValue("loginFlg", true); ?> ・認証なしページのPHP <?php $SPIRAL->setTHValue("loginFlg", false); ?> 登録フォームブロックをソース編集し、 ログインしていない or 入力値の引継ぎがある場合は登録フォームに元からあるタグを表示して、 ログインしている and 入力値の引継ぎがない場合は更新フォームのタグを表示するようにします。 ・テキストのinput部分のカスタマイズ例 <th:block th:if="${#strings.toString(inputs) ne '{}' || cp.result.value['loginFlg'] eq false}"> <input type="text" class="sp-form-control" th:name="${fields['f01'].name}" th:value="${inputs['f01']}"> </th:block> <th:block th:if="${#strings.toString(inputs) eq '{}' && cp.result.value['loginFlg'] eq true}"> <input type="text" class="sp-form-control" th:name="${fields['f01'].name}" th:value="${siteClient.record[1]}"> </th:block> siteClient.record[○] の○の箇所は、認証DBの呼び出したいフィールドのIDを入力します 例えば登録フォームに使用している申請DBの氏名フィールドがID:1、 会員DBの呼び出したい氏名フィールドがID:2の場合は、 <input type="text" class="sp-form-control" th:name="${fields['f01'].name}" th:value="${siteClient.record[2]}"> となります。 ※フィールドタイプごとにタグの書き方が異なるので、テキスト以外の引継ぎ用タグは更新フォームを作成して確認してください。 SPIRERS ナレッジ向上チームが確認したところ、「パスワード」「日時」「ファイル」は、更新フォームのタグを流用しても値を呼び出すことができませんでした。 ▼考えられる原因 パスワード:ハッシュ化されているためそもそも呼び出せない。 日時:更新フォームに対応していないため、値の呼び出しができない。 ファイル:ファイル添付関連のタグは裏側で生成されるため、ソースを編集しても対応できない。

    • 引用する
    2022年7月05日(火) 13:24:55
※ 必須項目