@seanbreeden Przepraszam, głosowałem, ale zapomniałem zaakceptować.
Gaurav Agrawal
Odpowiedzi:
30
Nie należy używać połączeń pomocniczych bezpośrednio w szablonie.
Niech instancja pomocnika zostanie podana jako zależność od bloku, który renderuje szablon, i utwórz w swoim bloku metodę, która wywołuje pomocnika i wywołuje tę metodę w szablonie.
Czy możesz wyjaśnić, jaki byłby problem, gdybyśmy nazywali pomocnika bezpośrednio w szablonie bez definiowania zależności
Prashant Valanda,
to nie jest dobra praktyka. Wprowadza niezadeklarowaną zależność. Jeśli chcesz to zrobić poprawnie, powinieneś wywoływać w szablonie tylko metody z bloku, który je renderuje.
Marius
2
Główny programista magento również zadzwonił do pomocnika bezpośrednio w pliku phtml
Prashant Valanda,
2
To nie poprawia sytuacji. Być może ta część nie została jeszcze refaktoryzowana
Marius
1
Krótka odpowiedź: tak. Długa odpowiedź, nie powinieneś mieć pomocnika z 10 metodami i wszystkie są potrzebne do tego samego bloku. Jeśli tak się stanie, być może powinieneś pomyśleć o refaktoryzacji kodu do mniejszych bloków i szablonów.
Odpowiedzi:
Nie należy używać połączeń pomocniczych bezpośrednio w szablonie.
Niech instancja pomocnika zostanie podana jako zależność od bloku, który renderuje szablon, i utwórz w swoim bloku metodę, która wywołuje pomocnika i wywołuje tę metodę w szablonie.
Niech twój blok jest zdefiniowany w ten sposób
Następnie możesz zadzwonić w swoim szablonie
$block->doSomething()
źródło
Musisz użyć w ten sposób:
źródło
Musisz wpisać całą nazwę klasy w pomocniku, jak poniżej:
Możesz go użyć w pliku phtml, używając powyższego kodu
źródło
Zmień Custommodule na NameSpace (nazwa firmy) zmień ReviewOdniesienie do (nazwa modułu)
W
/var/www/html/magento2/app/code/Custommodule/ReviewRating/Block/HomehorizontalWidget.php
W
/var/www/html/magento2/app/code/Custommodule/ReviewRating/view/frontend/templates/homehorizontalwidget.phtml
W
/var/www/html/magento2/app/code/Custommodule/ReviewRating/Helper/Data.php
W
/var/www/html/magento2/app/code/Custommodule/ReviewRating/etc/adminhtml/system.xml
źródło
Wypróbuj ten kod w swoim bloku:
W swoim szablonie możesz zadzwonić:
źródło