verbb / buttonbox

A collection of utility field types for Craft
MIT License
90 stars 15 forks source link

Error Adding a Button Box "Buttons" Field to an Existing Entry #64

Open richhayler opened 1 month ago

richhayler commented 1 month ago

Describe the bug

An "ArgumentCountError" occurs when adding a Button Box "Buttons" field to an existing entry

"ArgumentCountError: Too few arguments to function craft\fields\BaseOptionsField::normalizeValue(), 1 passed in /craft/vendor/verbb/buttonbox/src/fields/Buttons.php on line 153 and exactly 2 expected in /craft/vendor/craftcms/cms/src/fields/BaseOptionsField.php:273"

Buttons.php CleanShot 2024-05-04 at 14 14 52@2x

BaseOptionsField.php CleanShot 2024-05-04 at 14 13 49@2x

I believe the fix is to change this (on line 153 of /craft/vendor/verbb/buttonbox/src/fields/Buttons.php) $value = $this->normalizeValue($this->defaultValue());

to this $value = $this->normalizeValue($this->defaultValue(), $element);

Steps to reproduce

  1. Create a new section and configure a new entry type
  2. Add some entries to the new section
  3. Create a new "Button" Button Box field and add a couple of selectable options
  4. Add the new "Button Box" field to the entry type above
  5. Click to open an existing entry for this section
  6. Error message is displayed - and as a result cannot edit / update the entry.

Note: A similar issue occurs when adding or removing "Button Box" values/options from a Button Box field that is part of an existing entry and then returning to the entry to edit it.

Craft CMS version

5.1.1

Plugin version

5.0.0-beta-1

Multi-site?

Yes

Additional context

See Stack Trace below:

ArgumentCountError: Too few arguments to function craft\fields\BaseOptionsField::normalizeValue(), 1 passed in /craft/vendor/verbb/buttonbox/src/fields/Buttons.php on line 153 and exactly 2 expected in /craft/vendor/craftcms/cms/src/fields/BaseOptionsField.php:273 Stack trace:

0 /craft/vendor/verbb/buttonbox/src/fields/Buttons.php(153): craft\fields\BaseOptionsField->normalizeValue()

1 /craft/vendor/craftcms/cms/src/base/Field.php(592): verbb\buttonbox\fields\Buttons->inputHtml()

2 /craft/vendor/craftcms/cms/src/fieldlayoutelements/CustomField.php(372): craft\base\Field->getInputHtml()

3 /craft/vendor/craftcms/cms/src/fieldlayoutelements/BaseField.php(349): craft\fieldlayoutelements\CustomField->inputHtml()

4 /craft/vendor/craftcms/cms/src/fieldlayoutelements/CustomField.php(324): craft\fieldlayoutelements\BaseField->formHtml()

5 /craft/vendor/craftcms/cms/src/web/View.php(1669): craft\fieldlayoutelements\CustomField->craft\fieldlayoutelements{closure}()

6 /craft/vendor/craftcms/cms/src/fieldlayoutelements/CustomField.php(323): craft\web\View->namespaceInputs()

7 /craft/vendor/craftcms/cms/src/models/FieldLayout.php(832): craft\fieldlayoutelements\CustomField->formHtml()

8 /craft/vendor/craftcms/cms/src/web/View.php(1663): craft\models\FieldLayout->craft\models{closure}()

9 /craft/vendor/craftcms/cms/src/models/FieldLayout.php(831): craft\web\View->namespaceInputs()

10 /craft/vendor/craftcms/cms/src/controllers/ElementsController.php(925): craft\models\FieldLayout->createForm()

11 /craft/vendor/craftcms/cms/src/controllers/ElementsController.php(398): craft\controllers\ElementsController->_prepareEditor()

12 [internal function]: craft\controllers\ElementsController->craft\controllers{closure}()

13 /craft/vendor/craftcms/cms/src/web/CpScreenResponseFormatter.php(125): call_user_func()

14 /craft/vendor/craftcms/cms/src/web/CpScreenResponseFormatter.php(50): craft\web\CpScreenResponseFormatter->_formatTemplate()

15 /craft/vendor/yiisoft/yii2/web/Response.php(1100): craft\web\CpScreenResponseFormatter->format()

16 /craft/vendor/craftcms/cms/src/web/Response.php(337): yii\web\Response->prepare()

17 /craft/vendor/yiisoft/yii2/web/Response.php(340): craft\web\Response->prepare()

18 /craft/vendor/yiisoft/yii2/base/Application.php(390): yii\web\Response->send()

19 /web/index.php(12): yii\base\Application->run()

20 {main}

engram-design commented 1 month ago

This should already be fixed in 5.0.0-beta.2?