Тема - полный продукт-описание При оформлении заказа
Я думал, что это будет довольно легко, но это оказалось трудной задачей.
Мой клиент попросил меня реализовать полное описание продукта в таблице подтверждения заказа внутри проверки.
На данный момент у нас есть только краткое описание:
Файл: темы/newtheme/шаблоны/оформление заказа/_partials/заказ-подтверждение-таблица.ТПЛ
<div class="order-confirmation-table">
{block name='order_confirmation_table'}
{foreach from=$products item=product}
<div class="order-line row">
{$product->description_short nofilter}
</div>
{/foreach}
{/block}
</div>
Я думал, что на основе этого мне просто нужно будет изменить атрибут, к которому я обращаюсь, например: {$product - >description nofilter}
Но затем выяснилось, что класс $product внутри проверки не является обычным классом продукта. Он сочетается со слоем абстракции LazyArray.
Как описано в руководстве разработчика от prestashop, они только что обновили LazyArrays в версии 1.7.5, чтобы вы могли получить к ним доступ через ->
. К сожалению уже пробовал:
Файл: темы/newtheme/шаблоны/оформление заказа/_partials/заказ-подтверждение-таблица.ТПЛ
<div class="order-confirmation-table">
{block name='order_confirmation_table'}
{foreach from=$products item=product}
<div class="order-line row">
{$product->description nofilter}
</div>
{/foreach}
{/block}
</div>
Не действовать
Затем я отлаживаю $product->description
.
Это пустой массив.
Поэтому я был бы очень рад, если бы кто-то мог помочь мне понять ленивый массив и получить описание


Ответы - Тема - полный продукт-описание При оформлении заказа / Prestashop - Full-Product-Description in Checkout

12.09.2019 10:29:05
Поле "описание"не находится в" белом списке " атрибутов, разрешенных спереди.
Если вы откроете файл " src / Core / Filter/frontEndObject/ProductFilter.php", вы получите белый список без "описания".
Src / core / files не может быть переопределен, поэтому вам придется создать модуль и зарегистрироваться на крючке " ActionFrontControllerAfterInit"
В вашей функции hook вызовите службу, получите фильтры и добавьте описание в белый список :
public function hookActionFrontControllerAfterInit()
{
$filterManager = $this->get('prestashop.core.filter.front_end_object.main');
// get list of all filters applied to client-side data
$filters = $filterManager->getFilters();
// get list of all filters applied to the cart object
$cartFilters = $filters['cart']->getFilters();
// get list of filters applied to each product inside the cart object
$productFilterQueue = $cartFilters['products']->getQueue();
foreach ($productFilterQueue as $filter) {
if ($filter instanceof PrestaShop\PrestaShop\Core\Filter\FrontEndObject\ProductFilter) {
$filter->whitelist(array('description'));
}
}
}
Вы можете найти некоторую документацию здесь http://build.prestashop.com/news/exposing-data-with-confidence/