-
Notifications
You must be signed in to change notification settings - Fork 9.3k
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
Fix check for boolean product attributes #8623
Fix check for boolean product attributes #8623
Conversation
Timo Klement seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account. |
|
||
if (is_string($value) && strlen($value)) { | ||
if ($value instanceof Phrase || (is_string($value) && strlen($value))) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, from second look I have a little suggestion :) As Phrase
accepts empty text, we need to check its length too.
So, it would be nice to add something like
$value = $value instanceof Phrase ? (string)$value : $value;
prior to if
instead of additional condition.
Would be nice to add a unit test for this case, but it's up to you, I believe.
And please link commit to your GitHub account: https://help.github.com/articles/why-are-my-commits-linked-to-the-wrong-user/ ;)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't see a big difference between current solution and the one you proposed.
It's not mandatory to convert Phrase into string to pass data into template
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@maghamed, right part of (is_string($value) && strlen($value))
is not checked in case of Phrase
currently.
I didn't think deeper if this is a problem or not (like, maybe there is no need to check length at all).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ishakhsuvarov @maghamed so check for strlen
could be simply removed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This failure to check for empty string results in empty attributes displaying as N/A in product view versus suppressing lines that have no value. Please fix to 2.1-develop !
|
||
if (is_string($value) && strlen($value)) { | ||
if ($value instanceof Phrase || (is_string($value) && strlen($value))) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't see a big difference between current solution and the one you proposed.
It's not mandatory to convert Phrase into string to pass data into template
@TKlement Fix has now been delivered to the |
I applied the fix and it shows the yes/ no values now with succes on the frontend. |
I have the community version 2.1.6 and still have this issue. |
In Related to community version 2.1.6 I think real reason for this kind of behaviour is lies in the logic of fetching attributes.
I think $attributesMap array should be the one that need to be loop. If the result from all $unionSelect doesn't have any value for the $attributesMap element, then it should fetch the default value for the attribute. |
This causes Empty EAV attributes to display as: N/A rather than line being suppressed on 2.1.7 - it also breaks my dynamically loaded attributes (via xml call) when used with && to include length check! Had to back-out this change on 2.1.7 to function as normal! |
[Spartans] Bugfix Delivery
Based on that Issue #6634 here is a fix to add also boolean product attributes to display in frontend.
Magento2 handles translations with the Phrase instance. A product attribut with type boolean uses Phrase instance but the validation verify for strings.
This fix also includes the instance Phrase for the verification.