Fluid partial is not rendered if folder with same name exists
If the following file structure is present:
The partial Foo can not be rendered, because the search order for the partial is:
$paths = array( 'Resources/Private/Partials/@partial', 'Resources/Private/Partialsfirstname.lastname@example.org' );
And the function file_exists checks if the partial exists and the folder is the first one checked and returns true, so Fluid generates an empty rendered partial.
In TYPO3 CMS fluid/Classes/View/TemplateView.php:473
This relates to #39868
Updated by Claus Due over 6 years ago
- Status changed from New to Closed
I'm closing this one but with a bit of back story and a workaround:
The reason that the lookup happens in the order it does, is that you are able to specify for example `<f:render partial="MyPartial.json" />` to overrule the otherwise automatically inserted format. Because of this, the first path we check must be the one that doesn't contain the format - e.g.:
1. Resources/Private/Partials/MyPartial.json (valid)
2. Resources/Private/Partials/MyPartial.json.html (not valid, not touched)
But because Fluid itself doesn't bother if a resolved file is a file or a folder, it returns TRUE in your case on the first path without the format because you've got the folder. So, to work around this, simply add the expected format in your `f:render` and you won't have any problems.
Finally, I'm closing this one because once standalone Fluid is merged, this becomes a non-issue. This Fluid version is already explicit about expecting a file when resolving template paths - https://github.com/TYPO3Fluid/Fluid/blob/master/src/View/TemplatePaths.php#L664.