Bug #101182
openCheckbox is always checked for each value in a form with object property with a value
0%
Description
Add a Fluid Template with a form and a checkbox bind to object property like this :
<f:form action="..." name="country" object="{country}">
<f:form.checkbox property="money" value="dollar" />
<f:form.checkbox property="money" value="euro" />
<f:form.checkbox property="money" value="yen" />
</f:form>
If object property already has a value, ex. : country.money = euro
Then all check boxes have the attribute checked while only the second one should be checked.
The problem is because the CheckboxViewHelper cast the values in boolean while it could be everything (string, int, boolean, etc.).
$checked = (boolean)$propertyValue === (boolean)$valueAttribute;
Updated by Gerrit Code Review over 1 year ago
- Status changed from New to Under Review
Patch set 1 for branch main of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/79523
Updated by Gerrit Code Review over 1 year ago
Patch set 1 for branch main of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/79528
Updated by Gerrit Code Review over 1 year ago
Patch set 1 for branch main of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/79693
Updated by Gerrit Code Review over 1 year ago
Patch set 2 for branch main of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/79528
Updated by Gerrit Code Review over 1 year ago
Patch set 2 for branch main of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/79523
Updated by Simon Praetorius over 1 year ago
I think that the current behavior of the CheckboxViewHelper is correct here. The case you described would be better covered by a set of radio buttons instead of checkboxes. The RadioViewHelper doesn't convert the values to booleans.
A valid use case for multiple checkboxes would be if you could select multiple options (in your example currencies). This case is covered by the CheckboxViewHelper by checking for is_array()
.
Updated by Florian Rival over 1 year ago
I don't agree with you, in HTML we can assign values to checkboxes and those values are sent to the server.
If you have a look at TYPO3's documentation : https://docs.typo3.org/other/typo3/view-helper-reference/main/en-us/typo3/fluid/latest/Form/Checkbox.html?highlight=checkbox, you can see a similar example :
<f:form.checkbox property="interests" value="TYPO3" />
This case won't work if the property bind to object already has a value and it should.
The patch I wrote, compares the values with the same type - the type of object property - it should then cover all the cases.
Checkboxes can contain any kind of value and not only boolean
Updated by Gerrit Code Review about 1 month ago
Patch set 3 for branch main of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/79523