UIコンポーネントを使用して管理者でフォームを作成したのでview/adminhtml/ui_component/[module]_[entity]_form.xml
、次のようにしています:
<field name="configuration">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="dataType" xsi:type="string">text</item>
<item name="label" xsi:type="string" translate="true">Configuration</item>
<item name="formElement" xsi:type="string">textarea</item>
<item name="source" xsi:type="string">form</item>
<item name="sortOrder" xsi:type="number">30</item>
<item name="dataScope" xsi:type="string">configuration</item>
<item name="validation" xsi:type="array">
<item name="required-entry" xsi:type="boolean">true</item>
</item>
</item>
</argument>
</field>
この値をにしたくないのですが、この値textarea
のバックエンドで独自のHTMLマジックを作成します。この「HTML Magic」は、フォームを投稿するときに水中で非表示のデータを送信する多くのJS / KnockOutになるため、フォームの一部である必要があります。追加してレンダリングを追加してみました:
<item name="renderer" xsi:type="object">Vendor\Module\Block\Adminhtml\Renderer\Configurator</item>
しかし、これはまだテキストエリアをレンダリングします。それから私はのformElement
ようなカスタムクラスで置き換えてみました:
<item name="formElement" xsi:type="object">Vendor\Module\Component\Form\Element\Configurator</item>
しかし、それから私はエラーを受け取ります:
The requested component ("Vendor\Module\Component\Form\Element\Configurator") is not found. Before using, you must add the implementation.
だからここに2つの質問:
- これは、カスタムフォーム要素を管理フォームに追加する正しい方法ですか?(もしそうなら:どのように?)
- 何があっても、実装を追加するにはどうすればよいですか?UIモジュールを調べて、その方法を確認していますが、何も見つかりません。
\Magento\Framework\View\Element\UiComponent\Config\Provider\Component\Definition::setComponentData()
イベントを使用してカスタムコンポーネントを追加することはすでに検討していましたが、これははるかに便利です。私は本当にこれらのMagento 2の例をもっと詳しく調べなければなりません。