KamikStudio Posted May 11, 2021 Share Posted May 11, 2021 Chciałbym wyciągnąć źródło sklepu do szczegółów zamówień. W sensie jest multistore i gdy wpadają zamówienia to na liście zamowień pokazuje się sklep A sklep B sklep C. Po wejściu w szczegóły chciałbym uzyskać to samo. Jestem już w pliku products.html.twig w katalogu src/PrestaShopBundle/Resources/view/admin/Sell/Order/Order/Blocks/View odpowiedzialny za widok szczegółów zamówień namierzyłem także odwołanie do multistore w /src/PrestaShopBundle/Controller/Admin/Sell/Order/OrderController.php w sumie zaraz na początku public function createAction(Request $request) { /** @var MultistoreContextCheckerInterface $shopContextChecker */ $shopContextChecker = $this->container->get('prestashop.adapter.shop.context'); if (!$shopContextChecker->isSingleShopContext()) { $this->addFlash('error', $this->trans( 'You have to select a shop before creating new orders.', 'Admin.Orderscustomers.Notification' )); return $this->redirectToRoute('admin_orders_index'); } $summaryForm = $this->createForm(CartSummaryType::class); $languages = $this->get('prestashop.core.form.choice_provider.language_by_id')->getChoices( [ 'shop_id' => $shopContextChecker->getContextShopID(), ] ); $currencies = $this->get('prestashop.core.form.choice_provider.currency_by_id')->getChoices(); $configuration = $this->get('prestashop.adapter.legacy.configuration'); return $this->render('@PrestaShop/Admin/Sell/Order/Order/create.html.twig', [ 'currencies' => $currencies, 'languages' => $languages, 'summaryForm' => $summaryForm->createView(), 'help_link' => $this->generateSidebarLink($request->attributes->get('_legacy_controller')), 'enableSidebar' => true, 'recycledPackagingEnabled' => (bool) $configuration->get('PS_RECYCLABLE_PACK'), 'giftSettingsEnabled' => (bool) $configuration->get('PS_GIFT_WRAPPING'), ]); } i mamy tam 'shop_id' => $shopContextChecker->getContextShopID(), dlatego też w pliku products.html.twig dodałem przy labelu h3 "Produkty", Źródło sklep: <div class="card-header"> <h3 class="card-header-title"> {{ 'Products'|trans({}, 'Admin.Global') }} (<span id="orderProductsPanelCount">{{ orderForViewing.products.products|length }}</span>) Źródło sklep: {{ getContextShopID }} </h3> </div> Jednak bezskutecznie Na bank problem jest w zmiennej, pewnie nie to wrzuciłem {{ getContextShopID }} pytanie co i jak? Link to comment Share on other sites More sharing options...
0 atomek Posted May 12, 2021 Share Posted May 12, 2021 Spróbuj za pomocą {{ OrderForViewing.shopId }}, jest to tylko id sklepu. Link to comment Share on other sites More sharing options...
0 KamikStudio Posted May 12, 2021 Author Share Posted May 12, 2021 10 minutes ago, atomek said: Spróbuj za pomocą {{ OrderForViewing.shopId }}, jest to tylko id sklepu. Niestety nie zadziałało, próbowałem już z tą klasą nawet w odwróceniu IdShop Link to comment Share on other sites More sharing options...
0 atomek Posted May 12, 2021 Share Posted May 12, 2021 (edited) PS 1.7.7.4 Chyba źle opisałem obrazek, powinno tam być: {{ dump(orderForViewing) }} Edited May 12, 2021 by atomek korekta (see edit history) Link to comment Share on other sites More sharing options...
0 KamikStudio Posted May 12, 2021 Author Share Posted May 12, 2021 (edited) <div class="card-header"> <h3 class="card-header-title"> {{ 'Products'|trans({}, 'Admin.Global') }} (<span id="orderProductsPanelCount">{{ orderForViewing.products.products|length }}</span>) Sklep: {{ OrderForViewing.shopId }} </h3> </div> @atomek Dodane, wyczyściłem cache, ale nie pokazuje się nic, oprócz Sklep: plus błąd po debugu Edited May 12, 2021 by KamikStudio (see edit history) Link to comment Share on other sites More sharing options...
0 KamikStudio Posted May 14, 2021 Author Share Posted May 14, 2021 Jakieś pomysły? @atomek jeszcze jakieś rozwiązanie? Link to comment Share on other sites More sharing options...
0 KamikStudio Posted May 17, 2021 Author Share Posted May 17, 2021 odświeżam Link to comment Share on other sites More sharing options...
0 KamikStudio Posted May 18, 2021 Author Share Posted May 18, 2021 (edited) Działa. Problem był taki, że zamiast małej literki "o" dałem dużą "O". Wyświetla się id sklepu. To i tak mnie nie satysfakcjonuje, ponieważ chciałbym uzyskać nazwę zgodnie z tabelą ps_shop kolumna name. Prościej byłoby gdyby w dokumentacji presty pojawiła się notka odnośnie tego, jakie klasy są używane do czego. Edited May 18, 2021 by KamikStudio (see edit history) Link to comment Share on other sites More sharing options...
0 Krystian Podemski Posted May 19, 2021 Share Posted May 19, 2021 Myślę, że źle podchodzisz do tematu, wg mnie łatwiej byłoby gdybyś podpiął się pod któryś z dostępnych hook za pomocą modułu, tutaj masz wizualizację: https://devdocs.prestashop.com/1.7/modules/sample-modules/order-pages-new-hooks/ Jeżeli miejsce Tobie nie pasuje tak w 100% to chwyć dany element JSem i go przenieś gdziekolwiek chcesz. A jak pobrać nazwę sklepu? W hook możesz sobie zrobić mniej więcej coś takiego: $order = new Order((int) $params['id_order']); $orderShop = new Shop($order->id_shop); $shopName = $orderShop->name; // tutaj zwracasz dane do widoku Smarty, czy Twigiem Tu masz też moduł przykładowy działający z hookami na stronie zamówienia: https://github.com/PrestaShop/example-modules/tree/master/demovieworderhooks Pamiętaj, że powinieneś unikać modyfikowania plików Core PrestaShop. Link to comment Share on other sites More sharing options...
0 KamikStudio Posted May 19, 2021 Author Share Posted May 19, 2021 @Krystian Podemski public function hookDisplayAdminOrderTop(array $params) { $order = new Order((int) $params['id_order']); $orderShop = new Shop($order->id_shop); $shopName = $orderShop->name; return $this->render($this->getModuleTemplatePath() . 'pokazzrodlosklepu.tpl'); } oraz views/templates/admin/pokazzrodlosklepu.tpl <div id="pokazZrodloSklepu" class="block"> <h4>{l s='Sklep' mod='pokazZrodloSklepu'}</h4> <div class="block_content"> <p>{$shop.name}</p> </div> </div> Czy dobrze zrozumiałem? Link to comment Share on other sites More sharing options...
0 Krystian Podemski Posted May 19, 2021 Share Posted May 19, 2021 Prawie dobrze, jeżeli chcesz używać Smarty to nie używasz $this->render + musisz przypisać zmienne do widoku. Zerknij na inne moduły, na pewno zrozumiesz. Link to comment Share on other sites More sharing options...
0 KamikStudio Posted May 20, 2021 Author Share Posted May 20, 2021 11 hours ago, Krystian Podemski said: Prawie dobrze, jeżeli chcesz używać Smarty to nie używasz $this->render + musisz przypisać zmienne do widoku. Zerknij na inne moduły, na pewno zrozumiesz. W takim razie, nie pozostaje nic innego jak return $this->display(__FILE__, 'pokazzrodlosklepu.tpl'); Link to comment Share on other sites More sharing options...
Question
KamikStudio
Chciałbym wyciągnąć źródło sklepu do szczegółów zamówień. W sensie jest multistore i gdy wpadają zamówienia to na liście zamowień pokazuje się sklep A sklep B sklep C. Po wejściu w szczegóły chciałbym uzyskać to samo.
Jestem już w pliku products.html.twig w katalogu
src/PrestaShopBundle/Resources/view/admin/Sell/Order/Order/Blocks/View
odpowiedzialny za widok szczegółów zamówień
namierzyłem także odwołanie do multistore w
/src/PrestaShopBundle/Controller/Admin/Sell/Order/OrderController.php
w sumie zaraz na początku
public function createAction(Request $request) { /** @var MultistoreContextCheckerInterface $shopContextChecker */ $shopContextChecker = $this->container->get('prestashop.adapter.shop.context'); if (!$shopContextChecker->isSingleShopContext()) { $this->addFlash('error', $this->trans( 'You have to select a shop before creating new orders.', 'Admin.Orderscustomers.Notification' )); return $this->redirectToRoute('admin_orders_index'); } $summaryForm = $this->createForm(CartSummaryType::class); $languages = $this->get('prestashop.core.form.choice_provider.language_by_id')->getChoices( [ 'shop_id' => $shopContextChecker->getContextShopID(), ] ); $currencies = $this->get('prestashop.core.form.choice_provider.currency_by_id')->getChoices(); $configuration = $this->get('prestashop.adapter.legacy.configuration'); return $this->render('@PrestaShop/Admin/Sell/Order/Order/create.html.twig', [ 'currencies' => $currencies, 'languages' => $languages, 'summaryForm' => $summaryForm->createView(), 'help_link' => $this->generateSidebarLink($request->attributes->get('_legacy_controller')), 'enableSidebar' => true, 'recycledPackagingEnabled' => (bool) $configuration->get('PS_RECYCLABLE_PACK'), 'giftSettingsEnabled' => (bool) $configuration->get('PS_GIFT_WRAPPING'), ]); }
i mamy tam
'shop_id' => $shopContextChecker->getContextShopID(),
dlatego też w pliku products.html.twig dodałem przy labelu h3 "Produkty", Źródło sklep:
Jednak bezskutecznie
Na bank problem jest w zmiennej, pewnie nie to wrzuciłem
{{ getContextShopID }}
pytanie co i jak?
Link to comment
Share on other sites
11 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now