Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Исправление удаления опций #912

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

yura3d
Copy link

@yura3d yura3d commented Apr 20, 2024

Что оно делает?

В PHP 8 более строгая проверка типов. Мы больше не можем использовать string в count(), т.к. она принимает в качестве аргумента только Countable|array. В коде же мы записываем в переменную $products результат implode() (которая всегда возвращает string) и передаём это в count(), что приводит к ошибке (исключение TypeError):

$products = implode(',', $products);
$key = $this->getOne('Option')->get('key');
$key = $this->xpdo->quote($key);
if (count($products) > 0) {

Заменил на проверку пустой строки:

if ($products !== '') {

Зачем это нужно?

Не удаляются ресурсы в корзине. Не удаляются опции у категорий.
В логе сервера при этом ошибки вида:

PHP Fatal error:  Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, string given in .../core/components/minishop2/model/minishop2/mscategoryoption.class.php:<actual line>

Связанные проблема(ы)/PR(ы)

Resolves #671

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Ошибка при попытке удаления опции
1 participant