質問

投稿者:yaesu
登録日:2025年9月4日(木)

レコード登録時に、参照フィールドの値を自動設定する方法

■DB 「admin」 ・mail メールアドレス、必須、ユニーク ・name テキスト ・group 参照フィールド ・groupname テキスト ・projectid テキスト 「group」 ・name テキスト、必須、ユニーク 「project」 ・id テキスト、必須、ユニーク ・group 参照フィールド ・groupname テキスト ■サイト 承認エリア「admin」 ┗登録フォーム「padd」(project追加) ■やりたいこと 上に書いた登録フォームにて、projectを追加します。 認証しているadminの参照フィールド「group」の値を、 今から作成するprojectの参照フィールド「group」に設定(転記)したいと考えました。 ■質問 上に書いた「やりたいこと」を実現する、設定方法を教えてください。 ・登録フォームの「自動登録」画面を見ても、 ・DB「project」の登録トリガ、レコードアクション画面を見ても、 設定方法がわかりませんでした。 よろしくお願いします。

更新日:2025年9月22日(月)
いいね

コメント

  • ご質問いただきましてありがとうございます。 > 上に書いた登録フォームにて、projectを追加します。 > 認証しているadminの参照フィールド「group」の値を、 > 今から作成するprojectの参照フィールド「group」に設定(転記)したいと考えました。 登録フォームの自動登録で、「projectの参照フィールド:group」の値に 「adminの参照フィールド:group」と同じ値を登録したいということで認識相違ございませんでしょうか。 認識相違がない場合、下記手順でやりたいことを実現可能となります。 1. 認証エリア「admin」のページから登録フォーム「「padd」(project追加)」へ遷移するリンクに   「引用レコード:認証レコードの参照先レコード」にて「group」を選択いただく 2. 「登録フォーム「padd」(project追加)」の自動登録にて 「projectの参照フィールド:group」に引用(任意レコード値)で「group」を選択 ▼自動登録>参照フィールドの任意レコード値引用 https://support.spiral-platform.com/function/function-site-manage/6882.html#reference3 注意点としまして、URL末尾に付与されたパラメータ値を参照先DB内の参照先レコードとして 参照フィールドに自動登録するものとなりますので、URLを改ざんされた場合に紐づけたい「group」のレコードと 異なる場合がございます。 改ざんを防ぐ場合には、PHPにてURLの末尾の値を取得し、Thymeleafにて ログイン者の「adminの参照フィールド:group」と一致しているかチェックし、th:ifで出しわけるなど行ってください。 ご確認の程、よろしくお願いいたします。

    • いいね
    2025年9月4日(木)
  • yaesu

    ご回答ありがとうございます。 >登録フォームの自動登録で、「projectの参照フィールド:group」の値に >「adminの参照フィールド:group」と同じ値を登録したいということで認識相違ございませんでしょうか。 相違ございません。 >1. 認証エリア「admin」のページから登録フォーム「「padd」(project追加)」へ遷移するリンクに >  「引用レコード:認証レコードの参照先レコード」にて「group」を選択いただく リンクにて、「引用レコード:認証レコードの参照先レコード」という設定方法が見つかりません。 どの様に設定できますか? 下の2つの設定とは異なると想像しています。 (以下、異なると思われる設定、2ヶ所) 「フリーコンテンツ(ビジュアル設定)→ページリンク追加→パラメータ付与」 を見ると、追加できるのは、固定のパラメータのみに見えました。 「フリーコンテンツ(ソース設定)→認証レコード値→フィールド」 を見ると、「group(参照フィールド)」が選択肢にあらわれません。

    • いいね
    2025年9月18日(木)
  • ご確認いただきましてありがとうございます。 >リンクにて「引用レコード:認証レコードの参照先レコード」という設定方法が見つかりません。どのように設定すればよいでしょうか。 「引用レコード:認証レコードの参照先レコード」の項目は、ページのソース設定から行うページリンク追加でのみ設定可能です。 ページをビジュアル設定にしている場合には、「基本設定>設定方法」より「ソース設定」に変更ください。 ※フリーコンテンツブロック内からの「引用レコード:認証レコードの参照先レコード」設定はできませんので、あらかじめご了承ください。 設定方法としましては、下記となります。 1. 「登録フォームのリンクを設置したいページ>body」の「+」ボタンをクリック 2. サイト内ページ選択で登録フォームの設定しているページを選択 3. 「リンク>サイト内ページ選択」を選択すると、「引用レコード:認証レコードの参照先レコード」をクリック 4. 参照フィールド「group」を設定し、「反映」 ご確認のほど、よろしくお願いいたします。

    • いいね
    2025年9月18日(木)
  • yaesu

    ご回答ありがとうございます。 >ページのソース設定から行うページリンク追加でのみ設定可能です。 なるほど、そのような前提があったと理解しました。 >1. 「登録フォームのリンクを設置したいページ>body」の「+」ボタンをクリック >2. サイト内ページ選択で登録フォームの設定しているページを選択 「1.」の後、添付の画面になりました。 「サイト内ページ選択」とは、どこから何をすれば良いですか?

    • いいね
    2025年9月19日(金)
  • yaesu

    「1.」と「2.」の間で、「リンク」を選択すればよいと理解しました。 ・その場合、「指定可能な参照フィールドがありません」と表示されました。(画像左上) ・関係あるかどうかわかりませんが、別の画面でも、「group(参照フィールド)」が選択できませんでした。(画像右上) ・DBでは、参照フィールドを設定しているという認識です。(画像下) 当初「レコード登録時に、参照フィールドの値を自動設定する方法」が私にも実現できれば、助かります。 よろしくお願いします。

    • いいね
    2025年9月19日(金)
  • ご連絡いただきましてありがとうございます。 > ・その場合、「指定可能な参照フィールドがありません」と表示されました。(画像左上) > ・関係あるかどうかわかりませんが、別の画面でも、「group(参照フィールド)」が選択できませんでした。(画像右上) > ・DBでは、参照フィールドを設定しているという認識です。(画像下) 「引用レコード」を使用するためには、「引用したい参照先DB」の公開範囲を指定する必要がございます。 (今回の場合は、「DB:group」の公開範囲を指定する必要がございます) 公開範囲を設定することで、「引用レコード」「認証レコード値挿入」でも選択することが可能となります。 レコード公開範囲についての詳細は、サポートサイトをご参照ください。 ▼レコード公開範囲 https://support.spiral-platform.com/function/function-site-manage/5187.html ご確認の程、よろしくお願いいたします。

    • いいね
    2025年9月19日(金)
  • yaesu

    ご回答ありがとうございます。 レコード公開範囲を設定することで、参照フィールド「group」を設定することができました。もう一歩だと思います。 >改ざんを防ぐ場合には、PHPにてURLの末尾の値を取得し、 >Thymeleafにてログイン者の「adminの参照フィールド:group」と >一致しているかチェックし、th:ifで出しわけるなど行ってください。 「adminの参照フィールド:group」の値を取得する方法を教えてください。 (以下、取得に失敗した試行錯誤) getAuthRecordByFieldIdを使い、テキストフィールドの値は取得成功しましたが。 getAuthRecordByFieldIdを使い、参照フィールドの値の取得に成功しません。 下のプログラムの場合、$gidは、空値になりました。 ■PHP //admin属性 $gid=$SPIRAL->getAuthRecordByFieldId("3"); //3:group(参照フィールド) $SPIRAL->setTHValue("gid",$gid); //URLパラメータ $arr1=$SPIRAL->getParams('record'); for($i=0;$i<count($arr1);$i++){ $arr2=explode(".",$arr1[$i]); if($arr2[0]=="99999"){ //99999は:DB"group"のID $rid=$arr2[1]; $SPIRAL->setTHValue("rid",$rid); } } ■Thymeleaf gid=<th:block th:text="${cp.result.value['gid']}">gid</th:block> rid=<th:block th:text="${cp.result.value['rid']}">rid</th:block>

    • いいね
    2025年9月19日(金)
  • ご連絡いただきましてありがとうございます。 > getAuthRecordByFieldIdを使い、テキストフィールドの値は取得成功しましたが。 > getAuthRecordByFieldIdを使い、参照フィールドの値の取得に成功しません。 getAuthRecordByFieldIdは参照フィールドや作成者などの一部の情報は取得できません。 ご迷惑おかけして申し訳ございませんが、ご了承ください。 参照フィールドの値を取得するには、PHPのgetParamを使用して取得することが可能です。 下記コードにて、参照フィールドの値を取得いたします。 ▼コード $param = explode(".", $SPIRAL->getParam("record")); $SPIRAL->setTHValue("param",$param[1]); getParamについての詳細は、サポートサイトをご参照ください。 ▼ページのPHP設定>getParam https://support.spiral-platform.com/function/function-site-manage/6898.html#getParamparamName ご確認の程よろしくお願いいたします。

    • いいね
    2025年9月19日(金)
  • yaesu

    ご回答ありがとうございます。 これまでの経緯を振り返りながら、返信させていただきます。 ■改ざんを防ぐ方法 >改ざんを防ぐ場合には、PHPにてURLの末尾の値を取得し、 >Thymeleafにてログイン者の「adminの参照フィールド:group」と >一致しているかチェックし、th:ifで出しわけるなど行ってください。 承知しました。 (a)URLの末尾の値 (b)ログイン者の「adminの参照フィールド:group」 を比較する必要があると認識しています。 ■直前の当方の質問 >「adminの参照フィールド:group」の値を取得する方法を教えてください。 今回の質問は、(b)です。 ■貴社の回答 >参照フィールドの値を取得するには、PHPのgetParamを使用して取得することが可能です。 https://support.spiral-platform.com/function/function-site-manage/6898.html#getParamparamName >getParam($paramName) >別のページからGETやPOSTで送信されてきた値やクエリパラメータの値を一つ取得します。 ■新たな当方の質問 getParamで取得できるのは、(b)ですか? 「(a)URLの末尾の値」と比較することで、改ざんを防げますか? 以上、当方の疑問が伝われば幸いです。 よろしくお願いします。

    • いいね
    2025年9月19日(金)
  • ご連絡いただきましてありがとうございます。 > (a)URLの末尾の値 > (b)ログイン者の「adminの参照フィールド:group」 > を比較する必要があると認識しています。 大変申し訳ございません。 (a)URLの末尾の値が取得できていないと読み間違えておりました。 質問と異なる回答となり申し訳ございません。 > getParamで取得できるのは、(b)ですか? > 「(a)URLの末尾の値」と比較することで、改ざんを防げますか? getParamで取得できるのは、(a)の値となります。 (b)ログイン者の「adminの参照フィールド:group」は、 ページのソース設定の「body」から「認証レコード値挿入」を行うことで取得可能です。 下記手順で、認証レコード値を挿入することが可能です。 1. 登録フォームのあるページをソース設定に変更 2. bodyの「認証レコード値挿入」より、参照フィールドをクリック 3. 参照フィールドの項目が表示されるので、「ID」を選択 上記手順で、ログイン者の「adminの参照フィールド:group」のIDが取得できますので、 (a)URLの末尾の値と比較することが可能です。 比較する際には、「認証レコード値挿入」にて挿入したコードを変更する必要がございます。 下記に、(a)と(b)が一致の場合に登録ブロックを表示、 不一致の場合にはフリーコンテンツブロックを表示を行うコードを記載いたしますので ご参照いただけますと幸いです。 ※(a)、(b)で取得している値は、「DB:group」の参照しているレコードIDとなります。 ※フリーコンテンツを表示する場合には、「権限なし」などの文言を設定していただき、登録できない旨の記載を行うこと等が可能です。 何卒よろしくお願いいたします。

    改ざん防止コード(Thymeleaf)
    <!-- 
        (a)URLの末尾の値:cp.result.value['rid']
        (b)ログイン者の「adminの参照フィールド:group」:siteClient.record[xx]['_id']
        ※型を合わせるため、#strings.toStringで(b)の型を変更いたします。
        ifb0xxxxxには、登録フォームブロックのブロックIDに変更いただくか、
        「+」ボタン>登録フォームより、挿入してください。
        fcb0xxxxxには、フリーコンテンツブロックのブロックIDに変更いただくか、
        「+」ボタン>フリーコンテンツより、挿入してください。
    -->
    <!-- (a)と(b)が一致している場合 -->
    <th:block th:if="${cp.result.value['rid'] eq #strings.toString(siteClient.record[xx]['_id'])}">
      <sp:block name="ifb0xxxxx"></sp:block>
    </th:block>
    <!-- (a)と(b)が不一致の場合 -->
    <th:block th:if="${cp.result.value['rid'] ne #strings.toString(siteClient.record[xx]['_id'])}">
        <sp:block name="fcb0xxxxx"></sp:block>
    </th:block>
    • いいね
    2025年9月19日(金)
  • yaesu

    当方の手元で動作確認成功しました。ありがとうございました。 登録フォームの自動登録だけでなく、以下についても理解が進みました。 ・ブロックの「ソース設定」では使えず、ページの「ソース設定」だと使える機能がある ・DBの公開範囲 ・PHPでは取得できず、Thymeleafで取得できる、値がある

    • いいね
    2025年9月22日(月)
  • ご確認いただきましてありがとうございます。 動作成功したとのことなによりでございます。 作成していく中でご不明点がございましたら、お気軽にクエスチョンボードをご活用ください。 引き続きよろしくお願いいたします。

    • いいね
    2025年9月22日(月)