У меня есть сайт с Drupal 8.6 и Commerce 2.11
У меня есть несколько магазинов, принадлежащих разным владельцам (maketplace).
Когда покупатель, как в 2 магазинах, это создаст 2 корзины покупок.
Как отобразить над корзиной, название магазина?
Я создал 4 файла ниже в пользовательском модуле.
Моя проблема :
Аутентифицированный пользователь добавляет товары в свою корзину, у него появляется ошибка 403 при переходе на страницу корзины.
Я проверил разрешения, и они правильно установлены.
Если я удалю свой пользовательский модуль, корзина снова станет доступной.
Зачем ?
commerce_marketplace_cart.info.yml :
commerce_marketplace_cart.info.yml
name: Commerce Marketplace Cart description: Implements Commerce Marketplace Cart. type: module core: 8.x package: Commerce (contrib) dependencies: - commerce:commerce_cart - commerce:commerce_product
commerce_marketplace_cart.module :
commerce_marketplace_cart.module
<?php /** * @file * Commerce Marketplace Cart. */
commerce_marketplace_cart.routing.yml :
commerce_marketplace_cart.routing.yml
commerce_cart.page: path: '/cart' defaults: _controller: '\Drupal\commerce_marketplace_cart\Controller\MarketplaceCartController::cartPage' _title: 'Shopping carts' requirements: _permission: 'access cart'
В папке /src/Controller есть файл MarketplaceCartController.php :
/src/Controller
MarketplaceCartController.php
<?php namespace Drupal\commerce_marketplace_cart\Controller; use Drupal\commerce_cart\Controller\CartController; /** * Overrides the cart page controller. */ class MarketplaceCartController extends CartController { /** * {@inheritdoc} */ public function cartPage() { $build = parent::cartPage(); $carts = $this->cartProvider->getCarts(); $carts = array_filter($carts, function ($cart) { /** @var \Drupal\commerce_order\Entity\OrderInterface $cart */ return $cart->hasItems(); }); if (!isset($build['empty'])) { foreach ($build as $key => $value) { if (isset($value['#prefix'])) { $store_name = $carts[$key]->getStore()->getName(); $build[$key]['#prefix'] = "<h2 class='cart cart-store-name'>{$store_name}</h2>" . $value['#prefix']; } } } return $build; } }
Вы дали разрешение под названием access_cart. Определите это разрешение в файле license.yml и назначьте это разрешение пользователю.
Других решений пока нет …
У меня есть сайт с Drupal 8.6 и Commerce 2.11
У меня есть несколько магазинов, принадлежащих разным владельцам (maketplace).
Когда покупатель, как в 2 магазинах, это создаст 2 корзины покупок.
Как отобразить над корзиной, название магазина?
Я создал 4 файла ниже в пользовательском модуле.
Моя проблема :
Аутентифицированный пользователь добавляет товары в свою корзину, у него появляется ошибка 403 при переходе на страницу корзины.
Я проверил разрешения, и они правильно установлены.
Если я удалю свой пользовательский модуль, корзина снова станет доступной.
Зачем ?
commerce_marketplace_cart.info.yml
:commerce_marketplace_cart.module
:commerce_marketplace_cart.routing.yml
:В папке
/src/Controller
есть файлMarketplaceCartController.php
:Решение
Вы дали разрешение под названием access_cart. Определите это разрешение в файле license.yml и назначьте это разрешение пользователю.
Другие решения
Других решений пока нет …