タグ付けされた質問 「uicomponent」

Magento Uiコンポーネントに関する質問を示します

1
コンポーネントvsウィジェット
Magento 2でコンポーネントとウィジェットの違いは何ですか?たとえば、モーダルコンポーネントとモーダルウィジェットがありますが、どちらも同じように見えます。 成分 モーダルUIコンポーネントは、メインウィンドウの上部に開口する二次ウィンドウを実装します。モーダルウィジェットを使用します。 ウィジェット Magentoのモーダルウィジェットのメインウィンドウの上部に開いた道具の二次ウィンドウ。 ウィジェットは、数行のJSで初期化できます。コンポーネントとしては、XMLの行数が多くてもウィジェットを使用します。では、なぜ誰もがXMLメソッドを使用するのでしょうか。

2
UIコンポーネントを介して構築されたフォーム要素の検証
私は、ui-componentsを介して生成されたMagento 2フォームフィールドの1つに対してカスタム検証を実行しようとしています。設定に項目を 追加するvalidationことで、必要な値を作成できることを知っています。 このような: <field name="title"> <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">Some label here</item> <item name="formElement" xsi:type="string">input</item> <item name="source" xsi:type="string">whatever</item> <item name="sortOrder" xsi:type="number">999</item> <item name="dataScope" xsi:type="string">whatever</item> <item name="validation" xsi:type="array"> <item name="required-entry" xsi:type="boolean">true</item><!-- this validates it as required --> </item> </item> </argument> </field> validationアイテム内に何を追加する必要があり、カスタム条件に基づいてフィールドを検証する必要があるjsコードをどこに配置すればよいですか? …

2
Magento 2:チェックアウトステップの変更を検出する方法
Magento 2のチェックアウトにおけるステップの変化を検出する最良の方法を見つけようとしています。たとえば、配送の詳細から支払い、またはその逆の場合です。 私はいくつかの掘削を行い、でてきたvendor/magento/module-checkout/view/frontend/web/js/model/step-navigator.js私が使用することができnext()た火災ボタンを継続し、上のnavigateTo()どの火災直接checkoutstepをユーザーがクリックするとき-しかし、どちらの方法も、むしろハックようだが、ステップ変化を検出するためのクリーンな方法がなければならないに関係なく、どのようにそしてどのステップ。 私はstepChange()、チェックアウトステップの変更が発生するたびに起動する関数または同様のものを期待していました。 私の質問: チェックアウトステップの変更が発生したときにカスタムJSをトリガーする最良の方法は何ですか?

1
UIコンポーネントフォームフィールドにデフォルトの構成値を設定する
フォームとグリッドのui-components形式は、バージョン2.2(dev)で変更されています。(多分それはすでにしました)。フィールドのデフォルト値を設定するにはどうすればよいですか。 2.2-devより前は、このようなフィールドをフォームに追加できました。 <field name="title"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="dataType" xsi:type="string">text</item> <item name="default" xsi:type="string">Some default value.</item> <item name="label" xsi:type="string" translate="true">Page Title</item> <item name="formElement" xsi:type="string">input</item> <item name="source" xsi:type="string">source_here</item> <item name="sortOrder" xsi:type="number">20</item> <item name="dataScope" xsi:type="string">title</item> <item name="validation" xsi:type="array"> <item name="required-entry" xsi:type="boolean">true</item> </item> </item> </argument> </field> 2.2-devでは、列は次のようになります。 <field name="title" sortOrder="20" formElement="input"> …

1
UIコンポーネントのreverseMetadataMergeとは何ですか?
UIコンポーネントのドキュメントを見ると、次のことがわかります。 <item name="reverseMetadataMerge" xsi:type="boolean">true</item> 今、ほとんどの議論は彼らが何をするかについてかなり自明であるか、私はすでにそれを知っていreverseMetadataMergeますが、何をしますか?

2
Magento 2の管理フォームにカスタムフィールドを追加するにはどうすればよいですか?
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> しかし、それから私はエラーを受け取ります: …

1
ui_component XMLを介して列を追加するときのui_bookmarkテーブルの更新
Magento 2では、ui_componentベースのグリッドを使用して列を並べ替えることができ、Magentoは次回ログインしたときに設定を記憶します。これは、Magentoがui_bookmark(Magento\Ui\Model\Bookmarkモデルオブジェクトを介して)テーブルにデータを保存することで実現されます。 この機能は適切ですが、拡張機能の開発者またはシステムインテグレーターがMagento ui_componentXMLを使用してテーブルに列を追加すると問題が発生する可能性があります。カスタムデータがある場合ui_bookmark、Magentoは(一見)新しい列の並べ替え順序を無視し、奇妙な/予期しないことが発生する可能性があります。 (Magentoまたは独自の)UIグリッドに列を追加して、列が他のどこかに関連していることを確認する拡張開発者向けのベストプラクティスやシステムはありますか?つまり、「この2番目のアクションボタンは常に最後に表示されるか、常に2番目に最後に表示されます」、または「名前フィールドは常にIDの後にある必要があります。 拡張機能の開発者は、app/code/Package/Module/Setup/...クラスを介してui_bookmarkテーブルに到達し、これらのエントリを自分で更新する必要がありますか?またはこれを達成するためのより良い方法はありますか?または、ユーザーが既にエントリを持っている場合、拡張機能の開発者は、予期しない場所に列が追加された状態で生活する必要がありui_bookmarkますか?

2
UIコンポーネント-「Ymd H:i:s」形式(ISO時間形式)で時間を表示します
UIコンポーネントごとにいくつかの管理者リストページを作成します。すべての時間列のデフォルトの時間形式は次のようになります。 以下のようなUIコンポーネントコード <column name="created_at" class="Magento\Ui\Component\Listing\Columns\Date"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="filter" xsi:type="string">dateRange</item> <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/date</item> <item name="dataType" xsi:type="string">date</item> <item name="label" xsi:type="string" translate="true">Created At</item> </item> </argument> </column> データベースの時間形式は正しいです(ISO時間形式)。これが表示したいものです。 では、UIコンポーネントで「Ymd H:i:s」形式(ISO時間形式)に時間を表示するにはどうすればよいですか。アドバイスをありがとう:)

3
Magento 2製品の編集/管理フォームのカスタムセクションの追加
UIコンポーネントを学習しています。 製品編集/バックエンドフォームにカスタムセクションを追加したいので、 以下のファイルを作成しました。 vendor / module / view / adminhtml / ui_component / product_form.xml <?xml version="1.0" encoding="UTF-8"?> <form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd"> <fieldset name="mobile"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="label" xsi:type="string" translate="true">Time</item> <item name="provider" xsi:type="string">product</item> <item name="dataScope" xsi:type="string">data.product</item> <item name="sortOrder" xsi:type="number">2</item> <item name="collapsible" xsi:type="boolean">true</item> <item name="opened" xsi:type="boolean">false</item> <item name="ns" xsi:type="string">product_form</item> …

2
データを別のUIコンポーネントDataProviderに渡す方法
編集したフォームのフィールドセット内にあるグリッドUIコンポーネントがあります。entity_id編集フォームからグリッドにを渡す必要があります。ここで、いくつかのアイテムのコレクションを何らかの値でフィルタリングできます。グリッドは適切な結果を表示します。insertListingコンポーネントを使用してグリッドコンポーネントを作成しました。 <insertListing name="slide_grid"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="autoRender" xsi:type="boolean">true</item> <item name="source" xsi:type="string">slide</item> <item name="loading" xsi:type="boolean">true</item> <item name="dataScope" xsi:type="string">some_slider_slide_listing</item> <item name="externalProvider" xsi:type="string">${ $.ns }.some_slider_slide_listing_data_source</item> <item name="ns" xsi:type="string">some_slider_slide_listing</item> <item name="externalData" xsi:type="string">id</item> <item name="imports" xsi:type="array"> <item name="slider_id" xsi:type="string">${ $.provider }:data.entity_id</item> </item> <item name="exports" xsi:type="array"> <item name="slider_id" xsi:type="string">${ $.externalProvider }:params.slider_id</item> </item> …


1
Magento 2:UIコンポーネントで「elems」を生成するもの
リストUIコンポーネントの最上位のKnockoutJSテンプレートは次のようになります。 <!-- File: vendor/magento//module-ui/view/base/web/templates/collection.html --> <each args="data: elems, as: 'element'"> <render if="hasTemplate()"/> </each> これはMagentoによって次の生のKnockoutJSコードに変換されます。 <!-- ko foreach: {data: elems, as: 'element'} --> <!-- ko if: hasTemplate() --><!-- ko template: getTemplate() --><!-- /ko --><!-- /ko --> <!-- /ko --> どちらの場合も、このテンプレートはforeachビューモデルのelemsプロパティを上書きします。 RequireJSモジュールを見ると、(私は>)ビューモデルのコンストラクタクラスを返します vendor/magento/module-ui/view/base/web/js/lib/core/collection.js 私が見るinsertChild方法をに追加するように見えるelemsプロパティ。 私にはあまり明確ではありません。Magentoが実際に呼び出しinsertChildてどこにデータを入力するか、UIコンポーネントのコレクションを構成するビューモデルをelemsどのようにelems入力するのですか?

1
コントローラーアクションの予約済みキーワード-Magento 2
私は管理グリッドのコンセプトに取り組んでいます。私は1つのgithubソースコードを見つけ、それを分析しました。 URLがUIコンポーネントのレイアウトの宣言とは異なることがわかりました。 <item name="url" xsi:type="string">*/*/new</item> */*は現在のフロントネームとアクションパスを意味しますがNew.php、コントローラーパスでは見つかりませんでしたが、代わりにNewAction.phpファイルが存在します。 だから私は混乱しています。これはどのNewAction.phpようにモデルのファクトリーメソッドに自動的にマッピングされますか? 誰でもこれを説明できますか?

2
Magento 2-カスタム管理グリッドフィールド-並べ替えまたはフィルタリング時のエラー
このように、管理グリッドにカスタム列を追加しました <column name="customer_name" class="Vendor\Module\Ui\Component\Listing\Columns\CustomerName"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="filter" xsi:type="string">text</item> <item name="editor" xsi:type="string">text</item> <item name="sortable" xsi:type="string">true</item> <item name="label" xsi:type="string" translate="true">Customer Name</item> <item name="sortOrder" xsi:type="number">30</item> </item> </argument> </column> 私のCustomerNameクラスで、この列の値を作成します。 public function prepareDataSource(array $dataSource) { $fieldName = $this->getData('name'); foreach ($dataSource['data']['items'] as & $item) { $customer = $this->customerRepository->getById($item['customer_id']); $name = …

2
Magento2は、UIコンポーネントを使用して複数のテーブルコレクションでグリッドを構築する必要があります
カスタムモジュールの構築から始めて、コレクション内の複数のテーブルを結合し、それらをGRIDとフィルターでレンダリングする必要があるGRIDビューを表示する機能があります。 magento2のUIコンポーネントを使用しましたが、コレクション内の複数のテーブルを結合するタスクを完了できず、グリッドビューを準備できません。 誰でもこれを手伝ってくれる。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.