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/TextInput
OPがウィジェットを拡張するカスタムウィジェットを使用していて、そのテキストボックスに検証を適用する方法を知りたがっていた別のスレッド(URLが見つからないようです)にも遭遇しました。与えられた答えは、onValidate
関数をオーバーライドしてinput/TextInput
、エラーの場合は false を返すか、成功の場合はイベント オブジェクトを返すことでした。
では、おそらく同様のアプローチに従うことができると想定するのは正しいでしょうか? 私は新しいウィジェットを使用しているので、オーバーライドして true または false を返すことができる同様のメソッドはありますか? はいの場合、関数の名前は何ですか? どんな助けでも大歓迎です。