-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
How access to form.parent when the form has child called parent? #18882
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
Comments
I just ran into the same problem. Example: In MyFormType.php:
In the Twig template:
The condition in the Twig template is always true, which causes Bad Things to happen. |
But I'm 👍 for adding |
Usually a form type isn't supposed to know about a parent, a parent only does about its children, not sure if you should build your types/templates from this PoV |
@iltar it is not uncommon to use the check to properly format nested forms. Even symfony core templates use it: https://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Twig/Resources/views/Form/bootstrap_3_layout.html.twig#L256 |
Well, what about to reintroduce b3081e8#diff-f60b55ea46e40b9c4475a1bd361f6940L239 Note that it isn't just about parent view existence, but access through its properties too. |
A quick search on the use of 30,993 code results (maybe some aren't instances of
|
…nd form fields (yceruto) This PR was merged into the 2.7 branch. Discussion ---------- [Form][TwigBridge] Fix collision between view properties and form fields | Q | A | ------------- | --- | Branch? | 2.7 | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | #18882 | License | MIT | Doc PR | TODO This introduce a new Twig test function `rootform` that guarantee the right access to the `parent` property of the form view. The rest of the properties (`vars` and `children`) are not used at least inside Symfony repo. I've chosen this solution because it doesn't [affect the design of the form view class/interface](https://github.com/symfony/symfony/pull/19492/files#diff-f60b55ea46e40b9c4475a1bd361f6940R168) and because [the problem happen only on Twig](https://github.com/twigphp/Twig/blob/fd98722d15996561f598f9181dbcef8432e9ff85/lib/Twig/Extension/Core.php#L1439-L1447). More details about the problem here: * #24892 * #19492 * #23649 (comment) _if this is approved_ we should update also: * [`foundation_5_layout.html.twig`](https://github.com/symfony/symfony/blob/336600857b8bb47d5a7ba3d1924a0e7a3e2af7a8/src/Symfony/Bridge/Twig/Resources/views/Form/foundation_5_layout.html.twig#L321-L326) in `3.3` (done in #25305) * [`bootstrap_4_layout.html.twig`](https://github.com/symfony/symfony/blob/76d356f36a692dd8ad796de363484c97d6731d1f/src/Symfony/Bridge/Twig/Resources/views/Form/bootstrap_4_layout.html.twig#L176) in `3.4` (done in #25306) Commits ------- 8505894 Fix collision between view properties and form fields
How can know if a form has a parent or not, in a view?
The fast answer is:
but if the form has a child called
parent
the above statement always return a result, even when they do not have a real parent.then the only way to know if has a real parent is something like:
I'm missing something?
a method
hasParent()
is needed in the FormView to avoid the \ArrayAccess.The text was updated successfully, but these errors were encountered: