私は現在、UIコンポーネントをより深く掘り下げようとしていますが、私はここでちょっと行き詰まっています。
ここですべてのコードを投稿するのは少し時間がかかるので、関連するgithubリンクをいくつか投稿します。
画像がアップロードされ、ファイル名がデータベースに保存されます。
機能しないのは、フォーム編集ページのファイル入力にファイルを再度ロードすることです。
画像入力はここで定義されています:https : //github.com/davidverholen/magento2-teaser/blob/develop/view/adminhtml/ui_component/teaser_item_form.xml#L83
クラスは現在空です、私は今日多くのことを試しましたが、あまり有望であるように見えなかったし、それが必要かどうかさえわかりません:https : //github.com/davidverholen/magento2-teaser/blob/develop/Ui/Component/フォーム/要素/TeaserItemImage.php
フォームのDataSourceはこちらです:https : //github.com/davidverholen/magento2-teaser/blob/develop/Model/TeaserItem/DataProvider.php
(ここでimage_urlをロードし、これをフィールドインデックスとして使用しようとしました)
これについてのドキュメントもあり、これを行う方法を理解するにはjsが愚かすぎる場合があります。http: //devdocs.magento.com/guides/v2.0/ui-components/ui-form.html
これをすでに行ったアイデアや誰か?
事前にTHX!
更新:
これはメディアコンポーネント(画像に使用されます)で見つかりました: vendor / magento / module-ui / view / base / web / js / form / element / media.js
return Abstract.extend({
defaults: {
links: {
value: ''
}
},
私はknockout.js全体に不慣れですが、これは値バインディングが削除されたようです。それで、値を設定する別の方法がなければなりませんか?
また、構成でバインドを再度設定しようとしましたが、成功しませんでした。これを試しました(絶対ファイルパスを含むデータソースにimage_path_absを追加しました):
<field name="image_path" class="DavidVerholen\Teaser\Ui\Component\Form\Element\TeaserItemImage">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="links" xsi:type="array">
<item name="value" xsi:type="string">teaser_item_form.teaser_item_form_data_source.general.image_path_abs</item>
</item>
<item name="label" xsi:type="string">Image</item>
<item name="visible" xsi:type="boolean">true</item>
<item name="dataType" xsi:type="string">text</item>
<item name="formElement" xsi:type="string">image</item>
<item name="source" xsi:type="string">general</item>
</item>
</argument>
</field>