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

Проблема с виджетом ComboBoxWidget в множественном режиме. #39

Open
rem13 opened this issue Oct 5, 2016 · 3 comments

Comments

@rem13
Copy link

rem13 commented Oct 5, 2016

При любом изменении элемента, значения для множественного поля ComboBoxWidget создаются заново.

Т.к. данный виджет не передаёт id текущего значения в таблице, и мы всегда попадаем в блок создания связанных данных.

public function processEditAction()
{
    if ($this->getSettings('MULTIPLE')) {
        $sphere = $this->data[$this->getCode()];
        unset($this->data[$this->getCode()]);

        foreach ($sphere as $sphereKey) {
            $this->data[$this->getCode()][] = array('VALUE' => $sphereKey);
        }
    }

    parent::processEditAction();
}

Т.е. empty($referenceData['ID']) всегда true.

foreach ($referenceDataSet as $referenceData) {
    if (empty($referenceData[$fieldWidget->getMultipleField('ID')])) {
        // Создание связанных данных
        if (!empty($referenceData[$fieldWidget->getMultipleField('VALUE')])) {
            $result = $this->createReferenceData($reference, $referenceData);

            if ($result->isSuccess()) {
                $processedDataIds[] = $result->getId();
            } else {
                break; // ошибка, прерываем обработку данных
            }
        }
    } else {
        // Обновление связанных данных
        $result = $this->updateReferenceData($reference, $referenceData, $referenceStaleDataSet);

        if ($result->isSuccess()) {
            $processedDataIds[] = $referenceData[$fieldWidget->getMultipleField('ID')];
        } else {
            break; // ошибка, прерываем обработку данных
        }
    }
}
denx-b added a commit to denx-b/digitalwand.admin_helper that referenced this issue Aug 15, 2017
denx-b added a commit to denx-b/digitalwand.admin_helper that referenced this issue Aug 15, 2017
denx-b added a commit to denx-b/digitalwand.admin_helper that referenced this issue Aug 15, 2017
@denx-b
Copy link
Contributor

denx-b commented Dec 26, 2017

@ASGAlex, если ещё никто не решил, хотел бы вернуться к этой задаче. Подтверждаете ли вы вообще наличие бага? Мои предыдущие ишью были отклонены. Почему? Ответьте, пожалуйста, и я учту это в новом пулл-реквесте.

@ASGAlex
Copy link
Member

ASGAlex commented Dec 27, 2017

@denx-b по предыдущим багрепортам: один мерджреквест был принят и замерджен, другой вы сами закрыли. Больше никаких от вас не вижу...
На счет бага - там со связанными данными все как-то совсем плохо. Недавно залез в код, поднял тестовый пример - в общем, похоже, авторы ориентировались на некое ограниченное число кейсов, а остальное работает (или не работает) исключительно "по инерции". В общем, дописывать/разгребать там придётся прилично. Я начал пока с OrmElementWidget, но и у ComboBox, видимо, болезнь та же.

@denx-b
Copy link
Contributor

denx-b commented Dec 27, 2017

@ASGAlex, ну как же :) Про тот, что был смерджен я помню и да, был, который я сам отменил. Но вот решение этой ишью #106

Так давно было, я уже сам не помню нюансов, но это работало и очень хорошо, я задачу решил дважды, немного разными способами. Поэтому #106 совсем хорошо должен быть.

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

No branches or pull requests

3 participants