Widzę, że w branży rozwoju w Magento 2 repo metody loadoraz saveod Magento\Framework\Model\AbstractModelklasy są przestarzałe. Ale w rdzeniu znajdują się klasy gazillionów, które rozszerzają tę klasę i używają savei load. Tworząc własny moduł dla części CRUD moich podmiotów, kieruję się tymi samymi wytycznymi, co moduł podstawowy. Ale ponieważ te metody …
Jak widać w tym poście: Nieaktualne metody zapisywania i ładowania w abstrakcyjny modelsave i loadmetod są przestarzałe w Magento 2 rozwinąć gałąź. Dlatego dobrą praktyką jest teraz wdrażanie umów o świadczenie usług w odniesieniu do podmiotów CRUD. Jaki krok po kroku muszę wykonać, aby wdrożyć umowy serwisowe dla moich niestandardowych …
Trochę kontekstu. Chcę rozszerzyć funkcję eksportu zamówienia sprzedaży (za pośrednictwem siatki), aby mieć więcej kolumn. Stworzyłem moduł, który dodaje nową siatkę do eksportowania, a także nowy model kolekcji, który rozszerza oryginał. Korzysta z funkcji _beforeLoad (), dzięki czemu mogę dołączyć do potrzebnych tabel. Problem, który mam, polega na tym, że …
Obecnie widzę, że dla tabeli bazy danych z bardzo prostym schematem (około 5 pól) wstawia ona nowe rekordy z szybkością nieco poniżej ~ 50 wstawek / sekundę, w moim lokalnym środowisku programistycznym (dysk SSD) - to z brak obserwatorów w modelu wypełniającym powiązane tabele. Używając bezpośredniego SQL widzę spore ulepszenie …
Rozumiem, że preferowanym sposobem pracy między modułami w Magento 2 jest korzystanie z umów serwisowych. Więc jeśli chcę załadować produkt, korzystam z repozytorium produktów: $product = $productRepository->getById($id); czyli na podstawie umowy zwracającej instancję Magento\Catalog\Api\Data\ProductInterface. Ale zamiast tego mógłbym również użyć starego sposobu, wywołując bezpośrednio warstwę domeny: $product = $productFactory->create()->load($id); Czy …
Widzę, że wiele modeli w Magento 2 implementuje Magento\Framework\DataObject\IdentityInterface. Ten interfejs ma jedną metodę o nazwie getIdentities Implementacje metody zwykle zwracają return [self::CACHE_TAG . '_' . $this->getId()];. Przykład można znaleźć tutaj Do czego to służy?
Ponieważ trudno mi było znaleźć właściwą drogę, poniżej możesz znaleźć najlepszą praktykę, którą zastosowałem. Ciesz się, popraw mój angielski w razie potrzeby i powiedz mi, że się mylę, jeśli tak jest. :) Edycja: ... i odkryłem, że się myliłem w niektórych aspektach. Zaktualizowałem więc oryginalny post, gdy odpowiedzi Raphaela pomogły …
Rozejrzałem się wokół rdzenia i zobaczyłem kilka przykładów relacji między modelami od wielu do wielu, ale nie widzę na to ostatecznej odpowiedzi. Jako przykład powiedzmy, że tworzymy nowy model i chcemy mieć relację wiele do wielu z istniejącą tabelą produktów. Mamy więc nasz nowy Model - Stockist i tworzymy 2 …
Do łączenia tabel używam modeli SQL Zend Framework. Jako przykład zmodyfikowałem mój rzeczywisty kod, ale myślę, że zrozumiesz: $this->getSelect()->join( array('sections' => $sectionsTableName), 'main_table.banner_id = pages.banner_id', array() ) ->where("sections.section= '$section' OR sections.section = '0' OR (sections.section = '6' AND ? LIKE main_table.url)",$url) ->group('main_table.banner_id'); Strona jest ładowana za pomocą ajax, a parametr …
W tej chwili ponownie używam wielu kolekcji zagnieżdżonych w pętlach foreach. Czy można przenieść te rzeczy o kilka poziomów wyżej? Obecnie jestem zmuszony ponownie ładować kolekcje, które mają ponad 51 tys. Podmiotów, co znacznie spowalnia. W szczególności kolekcje kitinventory. <?php class Codespace_Module_Helper_Item extends other_one{ function functionOne($collection){ ... $data = $collection->getData(); …
Jaki jest cel korzystania z kolekcji tych dwóch modeli. Ratunek MySQL4 dlaczego nie możemy użyć modelu zasobów dla wszystkich kolekcji. Dlaczego używamy kolekcji MySql4 dla prostego modułu Ktoś wyjaśnia.
Mam model niestandardowy i model zasobów. Chcę załadować pojedyncze wystąpienie modelu przy użyciu więcej niż 1 pola. Model ma następujące pola: id tag_name custom_name group_name Chcę załadować ten model na podstawie tag_name, custom_name i group_name zamiast id. Obecnie używam kolekcji i addFilter dla każdego pola. To działa, ale zastanawiałem się, …
Czy istnieje sposób użycia prostego ORM Magento ( Mage_Core_Model_Abstracti Mage_Core_Model_Resource_Abstract) do wstawienia wierszy modelu za pomocą określonego klucza głównego? Na przykład, jeśli uruchomiłem poniższe polecenie na pustym systemie Magento Mage::getModel('core/website')->setData(array ( 'website_id' => 2, 'code' => 'foo', 'name' => 'Main Website', 'sort_order' => 0, 'default_group_id' => 1, 'is_default' => 1, …
To pytanie dotyczy dobrych praktyk programistycznych w Magento. Muszę pokazać (w liście produktów kategorii) produkt wraz z powiązanymi produktami w miniaturach. Więc edytowałem mypackage/mytheme/template/catalog/product/list.phtmlcoś takiego <?php $related=$_product->getRelatedProductIds(); if(count($related)>0){ echo '<div class="a'.$ap.'"></div>'; echo '<div class="li_p"><ul>'; foreach($related as $rela){ $rela_nom=Mage::getModel('catalog/product')->load($rela); echo '<li><a href="'.$rela_nom->getProductUrl().'"> <img src="'.$this->helper('catalog/image')->init($rela_nom, 'small_image')->resize(20).'" width="20" height="20"> </a><li>'; } echo '</ul></div>'; …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.