Skip to content

[FEATURE] - Adds source model on saving of multiselect attribute #34537

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

Conversation

rensieeee
Copy link

Description (*)

When creating a multiselect product attribute, the source model is empty by default. This isn't necessary and can be replaced with the default Table source model (\Magento\Eav\Model\Entity\Attribute\Source\Table).

Related Pull Requests

Fixed Issues (if relevant)

Manual testing scenarios (*)

  1. Create a multiselect product attribute in Magento. Notice it won't have a source_model class in the eav_attribute table.
  2. Apply these changes. Create a new multiselect attribute in Magento. Notice it contains the source_model \Magento\Eav\Model\Entity\Attribute\Source\Table.
  3. Create a boolean product attribute in Magento. Notice it still has the \Magento\Eav\Model\Entity\Attribute\Source\Boolean source model.
  4. Create a text product attribute in Magento. Notice it won't have a source_model.
  5. Update the source_model of the newly created multiselect attribute in the eav_attribute table (no Magento, just plain MySQL) to be empty.
  6. Update the newly created multiselect attribute label. Notice the source_model is still empty. These changes change the default source_model, but still allow for customisation.

Questions or comments

Contribution checklist (*)

  • Pull request has a meaningful description of its purpose
  • All commits are accompanied by meaningful commit messages
  • All new or changed code is covered with unit/integration tests (if applicable)
  • README.md files for modified modules are updated and included in the pull request if any README.md predefined sections require an update
  • All automated tests passed successfully (all builds are green)

@m2-assistant
Copy link

m2-assistant bot commented Nov 4, 2021

Hi @rensieeee. Thank you for your contribution
Here are some useful tips how you can test your changes using Magento test environment.
Add the comment under your pull request to deploy test or vanilla Magento instance:

  • @magento give me test instance - deploy test instance based on PR changes
  • @magento give me 2.4-develop instance - deploy vanilla Magento instance

❗ Automated tests can be triggered manually with an appropriate comment:

  • @magento run all tests - run or re-run all required tests against the PR changes
  • @magento run <test-build(s)> - run or re-run specific test build(s)
    For example: @magento run Unit Tests

<test-build(s)> is a comma-separated list of build names. Allowed build names are:

  1. Database Compare
  2. Functional Tests CE
  3. Functional Tests EE,
  4. Functional Tests B2B
  5. Integration Tests
  6. Magento Health Index
  7. Sample Data Tests CE
  8. Sample Data Tests EE
  9. Sample Data Tests B2B
  10. Static Tests
  11. Unit Tests
  12. WebAPI Tests
  13. Semantic Version Checker

You can find more information about the builds here

ℹ️ Run only required test builds during development. Run all test builds before sending your pull request for review.

For more details, review the Magento Contributor Guide documentation.

⚠️ According to the Magento Contribution requirements, all Pull Requests must go through the Community Contributions Triage process. Community Contributions Triage is a public meeting.

🕙 You can find the schedule on the Magento Community Calendar page.

📞 The triage of Pull Requests happens in the queue order. If you want to speed up the delivery of your contribution, join the Community Contributions Triage session to discuss the appropriate ticket.

🎥 You can find the recording of the previous Community Contributions Triage on the Magento Youtube Channel

✏️ Feel free to post questions/proposals/feedback related to the Community Contributions Triage process to the corresponding Slack Channel

@rensieeee
Copy link
Author

@magento run all tests

@magento-automated-testing
Copy link

The requested builds are added to the queue. You should be able to see them here within a few minutes. Please re-request them if they don't show in a reasonable amount of time.

@sdzhepa
Copy link
Contributor

sdzhepa commented Nov 4, 2021

Hello @rensieeee

Could you please provide more details about the use cases and business value of this issue or what dev experience it will improve and how?

We see the solution but we cannot understand what problem it solves

Thank you in advance

@rensieeee
Copy link
Author

Hi @sdzhepa

It's possible to create product attributes using rest api. Multiselect attributes require source models to work, which usually are written in code together with the attribute. However, this fix allows to create multiselect attributes using rest api, using the basic Table eav source model, making the restapi functionality fully compatible with all attribute creations.

@hostep
Copy link
Contributor

hostep commented Nov 4, 2021

Following issue will need to be taken into account before this PR can be accepted I believe: #13156 (PR that fixed that)

@rensieeee: does this PR write that source model to the database, or is it only used at runtime?

@rensieeee
Copy link
Author

Hi @hostep,

Yes, this PR writes the source model to the database, but only on creation. It isn't reset or overwritten on save, so you can still alter it if you want to.

@rensieeee
Copy link
Author

@magento run Static Tests, Integration Tests

@magento-automated-testing
Copy link

The requested builds are added to the queue. You should be able to see them here within a few minutes. Please re-request them if they don't show in a reasonable amount of time.

Copy link
Contributor

@andrewbess andrewbess left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @rensieeee
Could you please fix failed integration and static tests

Thank you in advance

@sidolov sidolov added the Priority: P3 May be fixed according to the position in the backlog. label Nov 18, 2021
@ishakhsuvarov
Copy link
Contributor

Hi

I am closing this PR for now as it seems like it has become stale and still needs work.

Please feel free to reopen if you wish to continue.

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Component: Catalog Priority: P3 May be fixed according to the position in the backlog. Release Line: 2.4
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants