0

サイト全体に多くのフォームがある Sitecore の実装に取り​​組んでいます (質問する前に、WFFM は問題外です!)。

私の質問は、フォーム ラベルを保存する最良の方法は何ですか? 私の現在の考えは、ディクショナリ構造を使用し、フォーム フィールド ラベルにキーでアクセスすることです。このアプローチの問題は、編集者が同じフィールドのラベルを変更したい場合です。たとえば、フォーム X では名フィールドが「First Name」で、別の場所では「Forename」になるか、ある場所では必須フィールド (アスタリスク付き) であり、別の場所ではオプションである可能性があります。「FirstNameWithAsterisk」や「FirstNameWithoutAsterisk」などと呼ばれる辞書項目を持ち始めたくありません。

私が考えたもう 1 つの考えは、単純にフォーム ラベルを Name Value List フィールドに格納することです。このフィールドには、次のような名前/値を入力できます。編集者は、他の場所で使用されている辞書エントリを誤って編集するリスクなしに、好きなフォーム ラベルを自由に使用できます。

ページテンプレートにフォームフィールドを配置する前に道をたどりましたが、これは非常に恐ろしい解決策であるため、この道を再び進むことには興味がありません.

編集

確認のため、このサイトのフォームの数には限りがあります。

4

2 に答える 2

1

私は辞書のアプローチを採用します。あなたの主張がそれが変わる可能性があるということであれば、それはそれらを論理的に分離する理由です. そのため、カスタム フォームと作成するフォームの有限セットがあるようです (確認してください)。そうは言っても、そのように辞書を作成してください。

  • フォーム1
    • Form1-名
  • フォーム2
    • Form2-名

または、あなたにとって意味のある別の命名規則。

論理的には、一意の各フォームの「名フィールド」ですが、技術的には、これらは 2 つの別個の無関係なものであるため、2 つの辞書項目が必要になります。ほのめかした命名規則を使用してこれを行うことができますが、コンテンツに基づいて名前を付けないでください (その値が変更されるため)。代わりに、コードが静的になるため、適用対象/使用場所に基づいて名前を付けます。キーを参照してください。

したがって、コンテンツとアスタリスクの有無に関係しているため、FirstNameWithAsteriskとは悪い名前だと言えます。FirstNameWithoutAsterisk代わりに、適用される形式またはコンテンツのその他の一般的な概念に基づいて名前を付けます。

編集: 同じフォーム コンポーネントを複数のページに追加できるため、これはそのプレゼンテーション コンポーネントのデータ ソースに最適なケースです。すべてのフォーム フィールドのテンプレートを作成し、それらの任意の数のインスタンスを作成し、ページにバインドされたフォームごとに、そのデータ ソースを目的のフィールド値を持つそれぞれのアイテムにポイントします。

于 2012-11-14T18:49:40.403 に答える
0

Sitecore には組み込みのディクショナリがあることをご存知ですか? システム/辞書を見てください。次に、Sitecore.Globalization.Translate.Text() を呼び出して値を取得します。

複数の言語をサポートしないことが確実な場合は、おそらくこの機能を採用して、辞書項目の異なる言語バージョンを実際にフィールド ラベルに必要な異なる値にすることができます。

于 2012-11-14T23:06:34.513 に答える