[Neos] Using NodeViewHelper Within a Plugin
Christian Müller
christian.mueller at typo3.org
Wed Jul 10 19:51:18 CEST 2013
Hi Jeff,
at least I can say that this was to be expected with the context cleanup.
To clarify things a bit lets see what has changed: Before the context
was stored in the NodeRepository singleton and so accessible virtually
everywhere, but the drawback was that the context (being not a
singleton) behaved like a singleton because changing the context in the
NodeRepository would lead to unexpected results. The ViewHelper simply
used the context in the NodeRepository.
Now the ViewHelper expects to either get a Node object (with a context)
or tries to find a context from its environment "fluidTemplateTsObject"
which is set in all Fluid templates invoked from TypoScript. So I
suspect you use the Viewhelper with a string path and so trigger the
exception. You have several ways of dealing with that.
Probably the easiest would be to use the current node or document node
that you now get in your plugin as internalArguments "node" and
"documentNode" and go from there. They have the correct context and you
can use getNode() on them to fetch the node you want and use that in the
viewhelper.
Another option is that your plugin controller again uses a typoscript
view and you give the internalArgument to the typoscript view to go
from. That way a fluid template inside will again have the
"fluidTemplateTsObject" set.
A third option which I would not recommend would be to use the
NodeConverter to convert the path you have to a Node object, but then
you probably won't have the same context as outside your plugin.
Hope that all makes sense and works for you, otherwise come back to me
and I will try to provide you with some code examples for it.
Cheers,
Christian
Jeff Segars wrote:
> I'm working on upgrading a project to Neos Alpha 4 and its mostly gone
> smoothly but I have run into one issue which I believe is related to the
> recent context cleanup.
>
> Within my plugin, I use neos:link.node to link out to specific pages
> within the site. Prior to Alpha 4, this worked properly but now I get
> the following exception.
>
> Uncaught exception #1224479370 in line 89 of
> /.../TYPO3_Neos_ViewHelpers_Uri_NodeViewHelper.php: Tried to get a
> variable "fluidTemplateTsObject" which is not stored in the context!
>
> When using the same view helper outside of a plugin, everything works as
> expected.
>
> Is this something that should still work or is using the node view
> helper within a plugin a bad idea?
>
> Thanks!
> Jeff
More information about the Neos
mailing list