Bug #6202
ActionViewHelper breaks html on empty content
Status: | Rejected | Start date: | 2010-01-25 | |
---|---|---|---|---|
Priority: | Should have | Due date: | ||
Assigned To: | - | % Done: | 0% |
|
Category: | ViewHelpers | |||
Target version: | - | Estimated time: | 0.50 hour | |
Has patch: | Affected Flow version: |
Description
It's not really a bug, but to me it's not very well designed.
If we do something like:
<f:link.action action="index">{blog.title}</f:link.action>
And blog.title is empty we would get:
<a href="someUri" otherAttributes="" />
Because right now if there is no content given to a ActionViewHelper it assumes that we don't need a closing tag. This ends up in a broken html.
Of course a link-tag without content doesn't make much sense but I think this can happen easily.
This decision is taken in Fluid/Core/ViewHelper/TagBuilder at line 222
if ($this->hasContent() || $this->forceClosingTag) { $output .= '>' . $this->content . '</' . $this->tagName . '>'; } else { $output .= ' />'; }
So far I think there are two possible solutions:
1) We add the following to ActionViewHelper, EmailViewHelper and ExternalViewHelper (and all featured TagBasedViewHelpers which do need the closing tag):
$this->tag->forceClosingTag(true);
2) We make forceClosingTag default true in TagBasedViewHelper and take care that every child of this class which doesn't need a closing tag sets it on false.
Personally I prefer second because I think the number of TagBasedViewHelpers which do need the closing tag is greater than the others.
Regards
History
#1 Updated by Robert Lemke over 5 years ago
- Target version changed from 1.0.0 alpha 7 to 1.0.0 alpha 8
#2 Updated by Bastian Waidelich about 5 years ago
- Category set to ViewHelpers
- Status changed from New to Rejected
- Target version deleted (
1.0.0 alpha 8) - Branch set to v4 + v5
Hi Georg and sorry for the late reaction ;)
You're right,*$this->tag->forceClosingTag(true);* would be the solution for this. But I don't agree to change this actually..
The anchor tag is allowed to be self-closing (in contrast to the script tag for example). So self-closing a-tags if there is no content seems to be the correct behavior to me. And it is XHTML-valid either.
I'm taking the liberty to close this issue for now. If you don't agree or want to discuss this further, please re-open!
Thanks for your feedback.