0

CP のドキュメントを詳しく調べれば調べるほど、自分の仮定がどれだけ間違っているかがわかります。現時点では、システムを効率的に理解するために、カスタム オブジェクト (非インシデント/非回答/非接触) のみで構成されるフォームを構築し、それをカスタマー ポータルで使用しようとしています。

物事を単純にするために、私がやろうとしているのは、フロント エンドとして 2 フィールド フォーム (両方のテキスト ボックス) と送信ボタンを用意することだけです。私がやろうとしていることは次のとおりです。

  • <rn:widget .... />などの属性を利用できるようrequiredに、入力テキストボックスを の形式で使用しますvalidate_on_blur。これらの属性をカスタム オブジェクトにも使用できるかどうかはわかりませんが、後で説明します。
  • 標準オブジェクトに使用される定義済みのフォーム検証メソッドを使用して (可能な場合)、車輪を再発明する必要がないようにします。
  • 検証が成功したら、フォーム データをカスタム コントローラーにポストし、そこからデータを保存します。

input/FormInput私はすぐに、標準の(テキスト ボックスを生成する) ウィジェットをカスタム オブジェクトに使用できないことに気付きました。input/TextInputまた、標準のウィジェットも使用できないことがわかりました。いくつかの研究開発の後、ウィジェットを最初から作成し、そのビュー内に適切な HTML を追加することで、最終的に解決策を見つけることができました。

ここまでは順調ですね。私の最初のステップは世話をしました。使えました

<rn:widget path="/custom/nl/custom_input" name="Packagename$Objectname.c$Fieldname" required = "true" />

フォームのビュー ページで。

次のステップであるフォーム検証は、私を際限なく混乱させるポイントです。ドキュメントに記載されているコードを理解するのに問題があるため、ここでスレッドを作成することにしました。

私はこれに出くわしましたが、残念ながらあまり役に立ちませんでした。input/TextInputOPがウィジェットを拡張するカスタムウィジェットを使用していて、そのテキストボックスに検証を適用する方法を知りたがっていた別のスレッド(URLが見つからないようです)にも遭遇しました。与えられた答えは、onValidate関数をオーバーライドしてinput/TextInput、エラーの場合は false を返すか、成功の場合はイベント オブジェクトを返すことでした。

では、おそらく同様のアプローチに従うことができると想定するのは正しいでしょうか? 私は新しいウィジェットを使用しているので、オーバーライドして true または false を返すことができる同様のメソッドはありますか? はいの場合、関数の名前は何ですか? どんな助けでも大歓迎です。

4

2 に答える 2

1

CP2 または CP3 を使用していますか?RightNow のどのバージョンを使用していますか? ここでは CP2 であると仮定して作業します。

あなたの質問は、ほぼ 2 つの部分です: 1) どのウィジェットを使用できますか? 2) 検証を拡張するにはどうすればよいですか?

required標準のウィジェット属性を使用したいだけのように聞こえるのでvalidate_on_blur、最初のアプローチの方が良いと思います。すぐに使用できる機能を使用して、説明したことを実現できるはずです。

標準ウィジェットの使用

ドット表記を使用してフィールドにアクセスする標準ウィジェットを再度使用してみてください。ROQL のアプローチに似ています。

<rn:widget path="input/FormInput" name="Packagename.Objectname.Fieldname" required = "true" />

オブジェクト自体がカスタムであるため、カスタム オブジェクトにはカスタム フィールドがありません。c$そのため、カスタム オブジェクトのフィールドにアクセスするためのプレフィックスはありません。この表記は、標準オブジェクトのカスタム項目にのみ適用されます。

また、FormInputウィジェットは、 を含む他の入力ウィジェットの単なるラッパーですTextInput

ウィジェット検証の作成

logic.jsカスタム ウィジェットを使用する場合は、前述のように、ファイル内の適切なメソッドをオーバーライドする必要があります。カスタム ウィジェットの作成方法によっては、onValidate、または検証メソッドが何であれ、実際にはまだそのファイルのメソッドではない場合があります。作成する必要があります。その場合、テキスト フィールドのイベント リスナーを設定してから、イベントに対してアクションを実行する必要があります。ぼかしを使いたい場合は、次のようになります (これは基本的に標準入力ウィジェットが行うことです)

RightNow.Widget.MyWidget = function(data, instanceID) {
    //Setup widget data
    this._inputField = document.getElementById("rn_" + this.instanceID + "_" + this.data.js.name);
    YAHOO.util.Event.addListener(this._inputField, "blur", this._blurValidate, null, this);
}

RightNow.Widget.TextInput.prototype = {
     _blurValidate: function()
     {
         //validate your field data
     }
}

CP3 のアプローチは、特に堅牢なカスタム ウィジェットの継承があるため、少し異なります。したがって、CP3 を使用していて、カスタム ウィジェットのルートに進みたい場合は、もう一度確認してください。

また、すべての標準ウィジェット コードは、WebDAV の src フォルダーを介して公開する必要があります。CP を開発しているため、プロファイルを介して WebDAV にアクセスできる場合は、標準のウィジェットがどのように機能するかを確認し、同じ原則をコードに適用できます。

于 2014-05-07T13:53:17.687 に答える