2016-07-06 5 views
0

OOTB CQ5ユーザーフォームコンポーネントの開始/終了をカスタマイズして、 'フォーム'コンポーネントをドラッグ&ドロップしたときに事前に入力されたカスタムコンポーネントページ。cq:サーバーの検証を伴うCQフォームのデフォルトコンポーネントを含める

私は現在、/ apps/foundation/components/form要素の開始/終了/アクションをカスタマイズしてオーバーライドしています。しかし、私は、FORMグループに属するコンポーネントを、フォームがフォームに追加されるたびに、フォームのstart ....... endにページに追加する方法を見つけ出すことになります。

form-endコンポーネントのjspに<cq:include path= "customComp" resourceType="/pathto/customComponent" />を使用しようとしましたが、表示されているカスタムコンポーネントを追加/表示しますが、開始ノードと終了ノードの間の別個のノードではないため、ページが動的に追加されます。

これは、フォームがページに配置されているときはいつでも、私のカスタムキャプチャコンポーネントの使用を強制/強制することです。

アドバンスで感謝!

答えて

1

OOTBコンポーネントで意図されているように、フォーム作成を完全に作成者に任せておきたい場合は、必須の「captcha」コンポーネントを「スニークイン」する簡単な方法はありません。 でもをcaptchaコンポーネントに入れることができれば、著者は単にそれを削除したり、段落システムから移動したりすることができます。

フォームエンドでキャプチャを混在させることは可能かもしれませんが、フォームエンドコンポーネントを最初から改めて再作成することはできません。私はそれをしたくありません。

  1. はフォームが作成または変更されるたびに発生しますJCRのEventListenerを実装します。

    は、私はあなたに役立つかもしれない3つのオプションを参照してください。 jcrのフォームデータ構造をチェックし、必須のcaptchaコンポーネントがない場合は、それを追加してコミットします。このタイプの行動は、もちろん少し日陰で、作者を驚かせるかもしれませんが、うまくいくでしょう。

  2. form-start、captcha、およびform-endを含む完全に事前設定されたフォームを含む段落システムを含むラッパーフォームコンポーネントを作成します。このアプローチは私も作家の仕事のビットを保存し、誰もchaptchaを簡単に "忘れる"ことはありません。しかし、悪意ある作者がcatpchaコンポーネントを明示的に削除するのを止めるものはありません。
  3. OOTBコンポーネントを使用しない完全にカスタムのフォームコンポーネントを作成します。このシナリオでは、作成者が実行できる操作と実行できない操作を完全に制御できます。ほとんどの場合、開発時間を節約し、著者がいくつかの素敵な部分を編集できるほとんど静的なフォームで終わるために、多くの柔軟性をあきらめます。
+0

ありがとうございます。 カスタマイズされたOOTBフォームコンポーネントを使用している作者が既にいるため、オプション3は実現不可能です。 オプション1:form-endコンポーネントの直前にcaptchaを配置するにはどうすればいいですか。作成者がページ上のどの要素に関係なく、送信ボタン前の最後のコンポーネントです。 オプション2 :いいですね、どうやって実装すればいいですか、レイアウトは粗く、pesudo-codeは良いでしょう。 また、を使ってform-end jspでcaptchaを追加すると、作成者がcaptchaを削除しようとしても、バックアップがポップアップしています: – vreddy

+0

私のコメントに追加するには、本当にcqを含めることができます。しかし、フォームの最後にcatpchaがありますが、私の主な問題は、ユーザーの応答がフォーム送信時に送信されても​​、サーバー側の検証をトリガーしないということです。(物理的な形のcaptchaノードがparsysにあった場合のように)。サーバーの検証メカニズムが、サーバーの検証のためにチェックするリソースのリストにcaptchaリソースを追加するトリックはありますか? – vreddy

+1

オプション1:EventListenerを実装し、jcrのフォームデータコンポーネントノードをループするコードを記述します。あなたはcaptchaをチェックするロジックを書いて、見つからなければ挿入します。キャプチャが正しい場所に挿入されるようにすることは、コードの一部であり、実際に達成するのは簡単です。 https://docs.adobe.com/docs/en/spec/jsr170/javadocs/jcr-2.0/javax/jcr/Node.html#orderBefore(java.lang.String,%20java.lang.String)を参照してください。 –

関連する問題