You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug] Address classification store keys by store, group and key id - #4264
Classification store keys were rendered as ObjectComponent name={ item.id } with no CombinedFieldNameProvider, so their combinedFieldName was just the key id (e.g. "6"). DynamicSelectField sends that as fieldName to the select options endpoint. The backend couldn't resolve it, so opening the dropdown of a select key with an options provider failed.
ClassificationStoreItem wraps the group's keys in a CombinedFieldNameProvider with [storeFieldName, groupId], so a key is now addressed as attributes.2.6.
The store field name is passed down from ClassificationStoreContent. Both values come from a small new helper, utils/combined-field-name.ts.
ClassificationStoreItem isn't exported from the SDK, so its new required prop doesn't affect bundles.
New combined-field-name.test.ts; it passes along with the other classification store util tests (16 tests).
ESLint on the changed files.
tsc --noEmit: no errors.
Not verified: the provider wiring has no component test, because rendering in jest is blocked by the @sdk/components → antd ESM import. Not exercised in a running Studio.
Manual test:
Set up a classification store select key with an @service options provider and add its group to an object.
Open the dropdown: the request sends fieldName=<store>.<groupId>.<keyId> and the options load.
In the language comparison view, check the same key in a localized store.
Spot-check a normal select field and a select field inside localized fields.
Keys of a classification store group were rendered without a combined field
name parent, so a key only sent its id (e.g. "6") as field name. The
backend could not resolve it, which broke loading dynamic select options.
Keys are now addressed as "<store>.<groupId>.<keyId>".
Fixespimcore/platform-version#577
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
The request-format change depends on an unmerged backend resolver, and provider-to-request integration remains unverified.
No open issues 🎉
What changed in this PR
Verdict: Request review. This PR addresses classification-store select-option failures by identifying keys as <store>.<groupId>.<keyId> rather than by key ID alone.
Changes:
Extracts the store name and constructs the parent field path through shared helpers.
Passes the store name into group rendering and wraps keys in CombinedFieldNameProvider.
Adds unit tests for store-name extraction and key-path construction.
Assessment:
Root cause and boundary: The provider supplies the missing context at the owning classification-store component (classification-store-item.tsx:130–140), addressing field identification rather than masking the request failure.
Call sites and compatibility: The supplied caller passes the new required prop (classification-store-content.tsx:173). Coverage of all callers and the stated absence of SDK exposure are not independently established here. The request format requires coordinated delivery with backend PR #2153, which remains open.
Tests and remaining risk: Helper tests cover path construction (combined-field-name.test.ts:13–32), but not provider-to-request integration. Running-Studio validation remains outstanding.
Documentation: The PR description explains the format and deployment dependency; no documentation or changelog file is changed.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
The field-name contract depends on studio-backend-bundle#2153, while provider-to-request wiring lacks component or running-Studio validation, requiring coordinated verification of both bundles, including language comparison.
Please use lodash's isArray here to match the explicit type-guard convention in .github/copilot-instructions.md:231–236. The surrounding classification-store components already use that guard.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes in this pull request
Resolves pimcore/platform-version#577
Classification store keys were rendered as
ObjectComponent name={ item.id }with noCombinedFieldNameProvider, so theircombinedFieldNamewas just the key id (e.g."6").DynamicSelectFieldsends that asfieldNameto the select options endpoint. The backend couldn't resolve it, so opening the dropdown of a select key with an options provider failed.ClassificationStoreItemwraps the group's keys in aCombinedFieldNameProviderwith[storeFieldName, groupId], so a key is now addressed asattributes.2.6.ClassificationStoreContent. Both values come from a small new helper,utils/combined-field-name.ts.ClassificationStoreItemisn't exported from the SDK, so its new required prop doesn't affect bundles.Needs the backend resolver for this field name: pimcore/studio-backend-bundle#2153. Both PRs have to be merged together.
Additional info
Verified locally:
combined-field-name.test.ts; it passes along with the other classification store util tests (16 tests).tsc --noEmit: no errors.Not verified: the provider wiring has no component test, because rendering in jest is blocked by the
@sdk/components→ antd ESM import. Not exercised in a running Studio.Manual test:
@serviceoptions provider and add its group to an object.fieldName=<store>.<groupId>.<keyId>and the options load.🤖 Generated with Claude Code