Цитата |
---|
написал: Ошибка на странице оформления заказа после обновления на php 8. Подскажите, как победить, в какую сторону копать?
Fatal error: Declaration of ExclLocationsDeliveryRestriction::extractParams(Bitrix\Sale\Internals\CollectableEntity $shipment) must be compatible with Bitrix\Sale\Services\Base\Restriction::extractParams(Bitrix\Sale\Internals\Entity $entity) in /home/bitrix/www/bitrix/php_interface/include/ExclLocationsD eliveryRestriction.php on line 45 Скрытый текст [ErrorException] E_COMPILE_ERROR Declaration of ExclLocationsDeliveryRestriction::extractParams(Bitrix\Sale\Internals\CollectableEntity $shipment) must be compatible with Bitrix\Sale\Services\Base\Restriction::extractParams(Bitrix\Sale\Internals\Entity $entity) (0) /home/bitrix/www/bitrix/php_interface/include/ExclLocationsD eliveryRestriction.php:45---------- |
Павел, здравствуйте! У Вас получилось решить проблему? У меня то же самое...на странице чек аута ошибка; и в админке невозможно войти в конкретный заказ, равно как и оформить заказ из админки (вместо пункта про отгрузку висит эта ошибка). Также ошибка при попытке входа в любую службу доставки или платежную систему...Текст ошибки:
Fatal error: Declaration of ExclLocationsDeliveryRestriction::extractParams(Bitrix\Sale\Internals\CollectableEntity $shipment) must be compatible with Bitrix\Sale\Services\Base\Restriction::extractParams(Bitrix\Sale\Internals\Entity $entity) in /home/c/cl88450/public_html/bitrix/php_interface/include/Exc
lLocationsDeliveryRestriction.phpon line 44
[ErrorException] E_COMPILE_ERROR
Declaration of ExclLocationsDeliveryRestriction::extractParams(Bitrix\Sale\Internals\CollectableEntity $shipment) must be compatible with Bitrix\Sale\Services\Base\Restriction::extractParams(Bitrix\Sale\Internals\Entity $entity) (0)
/home/c/cl88450/public_html/bitrix/php_interface/include/Exc
lLocationsDeliveryRestriction.php:44
----------
на 44 строке начинается такой код:protected static function extractParams(CollectableEntity $shipment) {
$order = $shipment->getCollection()->getOrder();
if (!$props = $order->getPropertyCollection()) {
return '';
}
if (!$locationProp = $props->getDeliveryLocation()) {
return '';
}
if (!$locationCode = $locationProp->getValue()) {
return '';
}
return $locationCode;
}
что с этим делать? с кастомизаторами связи никакой((((
UPD:Мне кто-то рекомендовал переименовать init.php и посмотреть, что будет. Что ж, переименовали. В заказы в админке заходит, службы доставки и платежки теперь видит.. НО!!! Теперь ему непонятна какая-то константа.[Error] Undefined constant "ADMIN_SECTION" (0) /home/c/cl88450/public_html/bitrix/templates/lk_default/comp
onents/bitrix/sale.location.selector.search/.default/result_modifier.php:60 #0: include /home/c/cl88450/public_html/bitrix/modules/main/classes/gene
ral/component_template.php:947 #1: CBitrixComponentTemplate->__IncludeMutatorFile(array, array) /home/c/cl88450/public_html/bitrix/modules/main/classes/gene
ral/component_template.php:854 #2: CBitrixComponentTemplate->IncludeTemplate(array) /home/c/cl88450/public_html/bitrix/modules/main/classes/gene
ral/component.php:776 #3: CBitrixComponent->showComponentTemplate() /home/c/cl88450/public_html/bitrix/modules/main/classes/gene
ral/component.php:716 #4: CBitrixComponent->includeComponentTemplate() /home/c/cl88450/public_html/bitrix/components/bitrix/sale.location.selector.search/class.php:629 #5: CBitrixLocationSelectorSearchComponent->executeComponent() /home/c/cl88450/public_html/bitrix/modules/main/classes/gene
ral/component.php:660 #6: CBitrixComponent->includeComponent(string, array, NULL, boolean) /home/c/cl88450/public_html/bitrix/modules/main/classes/gene
ral/main.php:1072 #7: CAllMain->IncludeComponent(string, string, array, NULL, array) /home/c/cl88450/public_html/bitrix/components/bitrix/sale.order.ajax/class.php:5407 #8: SaleOrderAjax->getLocationHtml(array, string) /home/c/cl88450/public_html/bitrix/components/bitrix/sale.order.ajax/class.php:5332 #9: SaleOrderAjax->getLocationsResult() /home/c/cl88450/public_html/bitrix/components/bitrix/sale.order.ajax/class.php:5229 #10: SaleOrderAjax->getJsDataResult() /home/c/cl88450/public_html/bitrix/components/bitrix/sale.order.ajax/class.php:5493 #11: SaleOrderAjax->prepareResultArray() /home/c/cl88450/public_html/bitrix/components/bitrix/sale.order.ajax/class.php:6281 #12: SaleOrderAjax->processOrderAction() /home/c/cl88450/public_html/bitrix/components/bitrix/sale.order.ajax/class.php:6251 #13: SaleOrderAjax->doAction(string) /home/c/cl88450/public_html/bitrix/components/bitrix/sale.order.ajax/class.php:6524 #14: SaleOrderAjax->executeComponent() /home/c/cl88450/public_html/bitrix/modules/main/classes/gene
ral/component.php:660 #15: CBitrixComponent->includeComponent(string, array, boolean, boolean) /home/c/cl88450/public_html/bitrix/modules/main/classes/gene
ral/main.php:1072 #16: CAllMain->IncludeComponent(string, string, array, boolean) /home/c/cl88450/public_html/personal/order/make/index.php:156
----------
в файле resultmodifier.php, начиная с 60 строки содержится такой код:$this->arResult['ADMIN_MODE'] = ADMIN_SECTION == 1;
// modes
$modes = array();
if(ADMIN_SECTION == 1 || $arParams['ADMIN_MODE'] == 'Y')
$modes[] = 'admin';
foreach($modes as &$mode)
$mode = 'bx-'.$mode.'-mode';
$arResult['MODE_CLASSES'] = implode(' ', $modes);
Похоже, проще в init.php что-то подправить..но что именно?