Как отобразить название магазина в корзине?

У меня есть сайт с Drupal 8.6 и Commerce 2.11

У меня есть несколько магазинов, принадлежащих разным владельцам (maketplace).

Когда покупатель, как в 2 магазинах, это создаст 2 корзины покупок.

Как отобразить над корзиной, название магазина?

Я создал 4 файла ниже в пользовательском модуле.

Моя проблема :

Аутентифицированный пользователь добавляет товары в свою корзину, у него появляется ошибка 403 при переходе на страницу корзины.

Я проверил разрешения, и они правильно установлены.

Если я удалю свой пользовательский модуль, корзина снова станет доступной.

Зачем ?

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 :

<?php

/**
* @file
* Commerce Marketplace Cart.
*/

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 :

<?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;
}

}

0

Решение

Вы дали разрешение под названием access_cart. Определите это разрешение в файле license.yml и назначьте это разрешение пользователю.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]