質問

投稿者:YF2025
登録日:2026年3月2日(月)

入力済み更新フォームを編集不可にしたい

登録→更新フォームで登録フォームの登録完了後、メールで更新フォームのユニークのURLを案内する仕様ですが、更新フォームの登録完了後に該当のユニークURLにアクセスすると入力内容の編集ができてしまいます。これを編集不可にするにはどのようなっ設定を行えばよいでしょうか。

更新日:2026年3月19日(木)
いいね

コメント

  • お問い合わせいただきましてありがとうございます。 >編集不可にするにはどのような設定を行えばよいでしょうか。 上記を実装する方法は大きく分けて2パターンございます。 いずれの方法でも値の有無で切り替える形になりますので、 更新フォームブロックでの更新時に日付やセレクトで「更新済み」フラグを 立てるなどの値の更新を行い判別ができるようにご設定いただいたうえで お試しください。 ①認証エリア自体に入れないように制限する 認証エリアにはログイン制限がかけられるため、更新日時を元に ログイン自体できないようにすることで更新ができないように 設定することが可能です。 ▼認証エリアログイン制限 https://support.spiral-platform.com/function/function-site-manage/9047.html ②Thymeleafでブロック自体を非表示にする。 更新させたくはないが、ログインはさせたい場合、Thymeleafを使って 更新フォームブロックを非表示にし、「更新済みです」のような非表示用の メッセージを設定したフリーコンテンツブロックを代わりに表示することで、 更新不可に設定可能です。 Thymeleafでの値の有り無しでの表示切り替えについては記入例を ご参考ください。 ご確認の程、よろしくお願いいたします。

    Thymeleaf記入例
    <th:block th:if="${siteClient.record[X]}">
        ここに更新フォームブロックを差し込み
    </th:block>
     
    <th:block th:unless="${siteClient.record[X]}">
        ここに更新フォームブロック非表示時のメッセージやフリーコンテンツブロックを設定
    </th:block>
    ※record[X]のXは判別に使う項目のフィールドIDに差し替え
    • いいね
    2026年3月3日(火)
  • YF2025

    ありがとうございます。 ②のパターンですが、更新フォームの最初の質問など、1つに設定しておけばよいものでしょうか。 コードブロックをご確認いただけますと幸いです。

    記入例追記
    <th:block th:if="${siteClient.record['f0133']}">
    
      <!--/* 回答日(新)(B1_0) */-->
      <sp:input-field name="f0133" control="ymdText"></sp:input-field>
      <div class="sp-form-item sp-form-field">
        <div class="sp-form-label">
          <th:block th:text="${fields['f0133'].label}">
            Label
          </th:block>
          <span class="sp-form-required" th:if="${fields['f0133'].required}" th:text="${fields['f0133'].requiredIndicator}">*</span>
          <span class="add-required-mark">*</span>
        </div>
        <div class="sp-form-data">
          <div class="sp-form-datetimes">
            <div class="sp-form-date">
              <input type="date" class="sp-form-control cal" th:name="${fields['f0133'].name}" th:placeholder="${fields['f0133'].placeholder.year}" th:value="${inputs['f0133']}" required>
            </div>
            <!-- <div class="sp-form-date">
              <input type="number" class="sp-form-control" th:name="${fields['f0133:year'].name}" th:placeholder="${fields['f0133'].placeholder.year}" th:value="${inputs['f0133:year']}">
              <span class="sp-form-date-separator">/</span>
              <input type="number" class="sp-form-control" th:name="${fields['f0133:month'].name}" th:placeholder="${fields['f0133'].placeholder.month}" th:value="${inputs['f0133:month']}">
              <span class="sp-form-date-separator">/</span>
              <input type="number" class="sp-form-control" th:name="${fields['f0133:day'].name}" th:placeholder="${fields['f0133'].placeholder.day}" th:value="${inputs['f0133:day']}">
            </div> -->
          </div>
          <span class="sp-form-noted" th:if="${fields['f0133'].help != null}" th:text="${fields['f0133'].help}">Help text</span>
          <span class="sp-form-error" th:if="${errors['f0133'] != null}" th:text="${errors['f0133'].message}">Error message</span>
        </div>
      </div>
    </th:block>
    
    <th:block th:unless="${siteClient.record['f0133']}">
        このアンケートは回答済みです。
    </th:block>
    • いいね
    2026年3月3日(火)
  • ご連絡いただきましてありがとうございます。 ②の方法につきましては、【更新フォームブロックを設置しているページ】をソース設定にして、 ブロックごとThymeleafの表示切替を行うものとなります。 回答日の有無により、Thymelafの表示切替設定につきましては、下記となります。 1. 更新された際に、今日の日付をDBに登録する 更新フォームから更新されたときに、当日の日付を登録する方法は、 DBトリガのレコードアクションが必要となります。 DBの更新トリガに下記を設定ください。 ▼設定 経路条件:フォーム 処理タイプ:更新 処理マッピング:回答日 = NOW() ※処理マッピングは、関数設定にする必要がございます。 DBトリガの設定につきましては、下記をご参照ください。 ▼DBトリガのレコードアクション https://support.spiral-platform.com/function/function-app-manage/6891.html 2. Thymelafに、回答日の値がある場合に表示切替をする 更新フォームを設置しているページにをソース設定にして、 th:ifを用いて表示切替を行います。 Thymeleafの表示切替につきましては、コードブロックに記載しますので、ご確認いただけますと幸いです。 何卒、よろしくお願いいたします。

    回答日の値がある場合に表示切替をする
    <!-- 更新フォームを設置するページを、ソース設定に変更のうえbodyに設定ください。 -->
    <!-- 回答日のフィールドIDが【133】の場合の記載となります -->
    
    <!-- 回答日に値があるとき -->
    <th:block th:unless="${siteClient.record[133]}">
     <!-- 【xxxxx】部分は、更新フォームブロックのフォームIDに差替えください -->
     <sp:block name="ufb0xxxxx"></sp:block>
    </th:block>
    
    <!-- 回答日に値がないとき --> 
    <th:block th:if="${siteClient.record[133]}">
        ここに更新フォームブロック非表示時のメッセージやフリーコンテンツブロックを設定
    </th:block>
    • いいね
    2026年3月3日(火)
  • YF2025

    ありがとうございます。 コードブロック確認しまして、いくつか疑問点があり、コードブロックの内容に追記しました。

    回答日の値がある場合に表示切替をする 追記
    <!-- 更新フォームを設置するページを、ソース設定に変更のうえbodyに設定ください。 -->
    <!-- 回答日のフィールドIDが【133】の場合の記載となります -->
    
    <!-- 回答日に値があるとき -->→「値がない時」ではないでしょうか。
    <th:block th:unless="${siteClient.record[133]}">
     <!-- 【xxxxx】部分は、更新フォームブロックのフォームIDに差替えください -->→添付画像のID部分でよいでしょうか。
     <sp:block name="ufb0xxxxx"></sp:block>
    </th:block>
    
    <!-- 回答日に値がないとき --> →「値がある時」ではないでしょうか
    <th:block th:if="${siteClient.record[133]}">
        ここに更新フォームブロック非表示時のメッセージやフリーコンテンツブロックを設定
    </th:block>
    • いいね
    2026年3月3日(火)
  • ご確認ありがとうございます。 また、記載のコメントと表示条件が逆になっており大変申し訳ございません。 ご記載いただいた通り、「th:unless」のほうが値がないときで、「th:if」のほうが値があるときになります。 また、更新ブロックを差し込む「ufb0xxxxx」は画像に記載されたIDで間違いございません。 お手数をおかけしますがご確認ください。

    • いいね
    2026年3月4日(水)
  • YF2025

    回答いただいた方法で試行しているのですが、うまくいかずです。 回答済みのフォームに再度アクセスすると、回答日に値があるときのメッセージは表示されるのですが、項目は表示され入力可能な状態です。 フォーム画面およびDBトリガのレコードアクションの設定画面のキャプチャ、該当部分のソースコードを添付しますので設定内容・認識に誤りがないかご確認いただけますでしょうか。

    更新フォームソース
    <div class="sp-form-container">
      <div class="sp-step-flow-f11596">
        <div class="large-setting arrow sp-clearfix">
          <div class="step active" title="Step1">
            <span>Step1</span>
          </div>
          <div class="step" title="Step2">
            <span>Step2</span>
          </div>
          <div class="step" title="完了">
            <span>完了</span>
          </div>
        </div>
        <div class="small-setting arrow sp-clearfix">
          <div class="step active" title="Step1">
            <span>Step1</span>
          </div>
          <div class="step" title="Step2">
            <span>Step2</span>
          </div>
          <div class="step" title="完了">
            <span>完了</span>
          </div>
        </div>
      </div>
      <!-- 回答日に値がないとき -->
    <th:block th:unless="${siteClient.record[133]}">
     <!-- 【xxxxx】部分は、更新フォームブロックのフォームIDに差替えください -->
     <sp:block name="ufb011596"></sp:block>
    </th:block>
    
    <!-- 回答日に値があるとき --> 
    <th:block th:if="${siteClient.record[133]}">
        回答済みです。
    </th:block>
      <div class="sp-form-item sp-form-html" th:inline="none"><h2><span style="font-size: 12pt;">レソエル®72 お客様服用1か月後アンケート</span></h2></div>
    
    • いいね
    2026年3月19日(木)
  • ご確認ありがとうございます 回答日の値の部分とブロックのnameを変更して見たところ、正しく値が あるときは回答済みが表示され、値がないときはフォームが表示されました ので、指定には問題がなさそうです。 お送りいただいたソースは途中までだと思いますので、例えば お送りいただいていない部分にブロックのタグが入ってしまって いたりしないでしょうか。 もし回答フォームが「回答済みです」のメッセージの下にある場合は、th:unlessで表示制御したもの以外のブロックが表示されている可能性が ございます。 お手数をおかけしますが、ページ内にsp:blockの指定が他にないか ご確認ください。 上記でもない場合はお手数をおかけしますがページのソースを 全ソースお送りください。 よろしくお願いいたします。

    • いいね
    2026年3月19日(木)
  • YF2025

    ご確認ありがとうございます。 ソースを確認したのですが、sp:blockの指定は他にありませんでした。 ソースコードを下記にて

    その1
    div class="sp-form-container">
      <div class="sp-step-flow-f11596">
        <div class="large-setting arrow sp-clearfix">
          <div class="step active" title="Step1">
            <span>Step1</span>
          </div>
          <div class="step" title="Step2">
            <span>Step2</span>
          </div>
          <div class="step" title="完了">
            <span>完了</span>
          </div>
        </div>
        <div class="small-setting arrow sp-clearfix">
          <div class="step active" title="Step1">
            <span>Step1</span>
          </div>
          <div class="step" title="Step2">
            <span>Step2</span>
          </div>
          <div class="step" title="完了">
            <span>完了</span>
          </div>
        </div>
      </div>
      <!-- 回答日に値がないとき -->
    <th:block th:unless="${siteClient.record[133]}">
     <!-- 【xxxxx】部分は、更新フォームブロックのフォームIDに差替えください -->
     <sp:block name="ufb011596"></sp:block>
    </th:block>
    
    <!-- 回答日に値があるとき --> 
    <th:block th:if="${siteClient.record[133]}">
        回答済みです。
    </th:block>
      <div class="sp-form-item sp-form-html" th:inline="none"><h2><span style="font-size: 12pt;">レソエル®72 お客様服用1か月後アンケート</span></h2></div>
    
    <div class="start_text">
    <p>
    レソエル72(以下、本剤)は緊急避妊薬であり、要指導医薬品として承認を受けるにあたり製造販売後調査の実施を条件付けられております。
    本剤を安全にお使いいただくために、以下のアンケートにつきまして
    <span style="color: red;">本剤を服用直後に「お客様情報」と「服用後の記載事項」、また本剤服用およそ1ヵ月後に「本剤を服用してからおよそ1ヵ月後」</span>
    についてご回答をお願いしています。ご回答いただいた情報は、独立行政法人医薬品医療機器総合機構および厚生労働省に本剤の製造販売後調査結果として報告させていただきます。
    </p>
    <p>
    <a href="https://form.alinamin-pharma.co.jp/inquiry_lesoeru72" target="_blank">本アンケートに関するお問い合わせはこちら</a>
    <br>
    <a href="https://alinamin-pharma.co.jp/contact/" target="_blank">製品に関するお問い合わせはこちら</a>
    </p>
    </div>
    • いいね
    2026年3月19日(木)
  • YF2025

    上記途中で送信してしまいました。 ソースコードがかなり長いのですが、ファイルアップからのリンクで送っても問題ないでしょうか。

    • いいね
    2026年3月19日(木)
  • ご確認ありがとうございます 送付済みの範囲ですといただいた内容に問題はなさそうです。 >ソースコードがかなり長いのですが、ファイルアップからのリンクで送っても問題ないでしょうか。 お手数をおかけしますがよろしくお願いします。 また、回答済みのメッセージはフォームの下に表示されているということでよろしかったでしょうか。 考えられる可能性としまして、確認はテスト環境で行っていただいておりますでしょうか。 リリースしていない状態で本番環境で確認いただいていると変更前の内容で見てしまうなどの状況が起こり得ます。 もしくは対象とは別のページを確認していないかをご確認ください。 また、未回答時の枠の中にも回答済みのように「未回答です」などのメッセージを足していただくことで、条件とおり表示非表示が動作しているかのご確認をお願いします。 よろしくお願いいたします。

    ブロックでなくメッセージに変えたら正しく表示されるか
    <th:block th:unless="${siteClient.record[133]}">
     <!-- 【xxxxx】部分は、更新フォームブロックのフォームIDに差替えください -->
        未回答です。(こちらのメッセージが値有無でそれぞれ表示されるかご確認ください)
    </th:block>
    
    <!-- 回答日に値があるとき --> 
    <th:block th:if="${siteClient.record[133]}">
        回答済みです。
    </th:block>
    • いいね
    2026年3月19日(木)
  • YF2025

    ・確認はテスト環境で行っています。 >また、回答済みのメッセージはフォームの下に表示されているということでよろしかったでしょうか。 →フォームの上です。 >また、未回答時の枠の中にも回答済みのように「未回答です」などのメッセージを足していただくことで、条件とおり表示非表示が動作しているかのご確認をお願いします。 →未解答時の画像添付します。 ※回答済みの画像は先ほど送付済み ソースコードは以下からご確認ください。 https://filecheetah.jp/receive/inputpwd?key=e06fdc5679be443595d3e017ebf7d583 受信情報:本日日付8桁

    • いいね
    2026年3月19日(木)
  • ソースコードの送付ありがとうございます。 ページのHTMLではなく、更新フォームブロック内でth:ifとth:unlessの タグをご利用いただいているようです。 基本的にこちらはタグで挟んだ内容を条件に合致した場合表示する、合致しなかった場合、表示しないという動作になります。 現在のようにブロック側で利用する場合は、質問01~質問28と送信ボタンなどの表示したくない範囲を挟んであげる必要がございます。 コードブロックの内容を参考にご修正ください。 ご確認よろしくお願いします。

    更新フォームブロックイメージ
    ■現在
      <!-- 回答日に値がないとき -->
    <th:block th:unless="${siteClient.record[133]}">
     <!-- 【xxxxx】部分は、更新フォームブロックのフォームIDに差替えください -->
     <sp:block name="ufb011596"></sp:block>
    </th:block>
    
    ■修正
      <!-- 回答日に値がないとき -->
    <th:block th:unless="${siteClient.record[133]}">
    
      <!--/* 質問01(新)(B1_0) */-->
    
       (以降のコード略)
    
      <div class="sp-form-item sp-form-interaction">
        <button class="sp-form-prev-button" type="submit" name="action" value="previous" th:if="!${step.isFirst}" th:text="${step.prevButtonLabel}">Prev</button>
        <button class="sp-form-next-button" type="submit" name="action" value="next" th:text="${step.nextButtonLabel}">Next</button>
      </div>
    
    </th:block>
    • いいね
    2026年3月19日(木)
あなたもログインして、
回答してみませんか?
質問がまとまらない方へ チャットコミュニティで気軽に聞いてみよう! 疑問や課題が整理できていなくても問題ありません。SPIRAL®で解決できる範囲がまだわからなくても質問できます。「ここで聞くと場違いかな?」というお悩みでも歓迎します。
  • Discordで聞く
  • Slackで聞く