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

4
Magento 2-list.phtmlによるカスタム製品コレクションのレンダリング
カテゴリページ(フロントエンド)の製品グリッドは、catalog_category_view.xmlのレイアウトを介してレンダリングされます。 カスタム製品コレクションがあるとしましょう ProductRepositoryInterface::getList($searchCriteria) method カスタムブロッククラスで、このコレクションをレンダリングしたい。レンダリングされた結果は、フロントエンドに製品グリッドとして表示される必要があります(カテゴリページと同様)。 これはどのように行うことができますか? 調査catalog_category_view.xmlすると、製品コレクションのレンダリングを担当する2つの重要な行があります。 <block class="Magento\Catalog\Block\Category\View" name="category.products" template="Magento_Catalog::category/products.phtml"> <block class="Magento\Catalog\Block\Product\ListProduct" name="category.products.list" as="product_list" template="Magento_Catalog::product/list.phtml"> これらのテンプレートファイルにカスタム製品コレクションを提供して、コレクションをレンダリングするにはどうすればよいですか? 私がこれについて間違っている場合、私を修正してください。 これは私のブロックコードがどのように見えるかです: <?php namespace Mod\Mod1\Block; use Magento\Framework\View\Element\Template; class Main extends Template { protected $_filterBuilder; protected $_filterGroupArray; protected $_filterGroupBuilder; protected $_searchCriteriaBuilder; protected $_productRepository; protected $_productFactory; protected $_list; public function __construct( \Magento\Framework\View\Element\Template\Context $context, \Magento\Catalog\Api\ProductRepositoryInterface $productRepository, …

1
adminhtmlでknockoutjsレンダリング後にコードをトリガーして実行する方法
更新:ビューモデルに直接アクセスできます。レンダリング後に実行するコードをトリガーする必要がある場合は、MutationObserverを使用します。良い例ができたらすぐにコードを投稿します。 元の質問: 電話での注文がたくさんあります。私は、admin-> customer-> webapi / jsonp呼び出しを使用してCRMソリューションから新規作成するデータを自動入力するモジュールに取り組んでいます。このようにして、magentoのデータは、すでに「マスターデータベース」に保存したデータの複製を作成しません。 私がまだやらなければならない1つのタスクは、お客様の住所を追加することです。これは、kockoutjs + magentojsが顧客フォームのすべてをレンダリングしていることが、テンプレート化された要素のキャプチャを妨げていることに気づくまで、最初は簡単に思えました。プログラムですべてのアドレスを削除し、新しいアドレスを作成した後、フィールドセット(入力要素)をキャプチャしようとするのにかなり時間がかかっています。 なぜ私がそうするのかと思うと、私のコードの一部がポップアップ表示され、「こんにちは、この人物は既に存在します。それらを使用しますか?」すでに入力したものはすべて削除され、正しい情報に置き換えられます。次に、コールセンターがそれを検証します、yadda yadda。 ここまでのコードを共有しますが、正しく機能しません。ちなみに、これは「onUpdate」イベントをキャッチするためにAbstractを拡張しています。コレクションアイテム内のコレクションへのアクセスを試みたとして、私を非難しないでください。onUpdateイベントをキャッチし、すべてのフィールドを確認するためのより良い方法を思いつくことはできません。 私はまた、何が悪いのかを完全に理解しています。どうすればそれを回避できるのかわかりません。何が問題なのか、私は.activate()呼び出しによって生成された要素が以下ですぐに利用可能になると想定 document.getElementsByClassName( 'admin__fieldset') これは間違ったロジックです。理想的には、このUIのトリックに頼ることなくフィールドセットのコンテンツをプルできるようにして、すべてを設定したらレンダリングするだけです。 私は、domの更新を監視するためにjQueryハックに頼りたくありません。 // jsonService variable is available here because it is in the php template render. see // Stti/Customer/view/adminhtml/templates/javascriptinject.phtml define(['ko','jquery','underscore','originalAbstract','uiElement', 'uiCollection'], function(ko, $, _, Abstract, Element, Collection) { "use strict"; var theArray = { …

2
コントローラーにすべての子ブロックをロードする方法
カートに追加するためにAjaxを使用しているため、カートのサイドバーを更新する必要があります。 このコードをコントローラーで試して、ブロックをレンダリングしました。 Mage::app()->getLayout()->getBlockSingleton('page/html')->setTemplate("page/html/upper.phtml")->toHtml(); ただし、親ブロックはレンダリングされ、子ブロックはレンダリングされません。 そしてレイアウトファイルは <block type="core/text_list" name="upper" as="upper" template="page/html/upper.phtml"> <block type="checkout/cart" name="top.cart" as="cart_overview"> <action method="setCartTemplate"><value>checkout/topcart.phtml</value></action> <action method="setEmptyTemplate"><value>checkout/cart/cartEmpty.phtml</value></action> <action method="chooseTemplate"/> <action method="addItemRender"><type>simple</type><block>checkout/cart_item_renderer</block><template>checkout/cart/sidebar/default.phtml</template></action> <action method="addItemRender"><type>grouped</type><block>checkout/cart_item_renderer_grouped</block><template>checkout/cart/sidebar/default.phtml</template></action> <action method="addItemRender"><type>configurable</type><block>checkout/cart_item_renderer_configurable</block><template>checkout/cart/sidebar/default.phtml</template></action> </block> </block> コントローラーで子ブロックをレンダリングする方法 手伝ってください。
7 blocks  layout  ajax  render 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.