Import of 3.3 Sitepackage: The Fusion object `Neos.Fusion:Menu` is not completely defined (missing property `@class`)


(ben youdontneedtoknowthat) #1

Hello dear people from Neos :slight_smile:

I just installed Neos 4.0 into my new Docker environment with php7.2, nginx, redis, postgresql and adminer and tried to import my “old” 3.3 Sitepackage.

For my whole 3.3 setup, i’ve followed https://punkt.de/de/blog/neos-workshop/neos-workshop-teil-2-ein-eigenes-sitepackage-fuer-neos-bauen.html and tried to do these steps again:

./flow site:prune
./flow package:delete Neos.Demo
composer remove neos/demo

./flow kickstart:site Vendor.SomeSite SiteName
./flow site:import Vendor.SomeSite

Unfortunately the site:prune and package:delete command is not working anymore like it’s written in the tutorial, so i’ve just deactivated the Neos Demosite in the backend.

Then i copied the Sitepackage from my 3.3 installation into the 4.0 folder. After the node:repair command, i got the following error:

An exception was thrown while Neos tried to render your page
The Fusion object Vendor.SomeSite:DefaultPage which you tried to inherit from does not exist. Maybe you have a typo on the right hand side of your inheritance statement for Vendor.SomeSite:Page.

rootNeos.Fusion:Case/
documentTypeNeos.Fusion:Matcher/
conditionNeos.Fusion:CanRender/

So i thought i’m going to look how it has been done in the demo and changed from

page = Neos.Neos:Page {
to
prototype(Vendor.SomeSite:DefaultPage) < prototype(Neos.Neos:Page) {

but this brought me into:

An exception was thrown while Neos tried to render your page
The Fusion object at path `root<Neos.Fusion:Case>/documentType<Neos.Fusion:Matcher>/element<Vendor.SomeSite:Page>/body<Neos.Fusion:Template>/navigation<Vendor.SomeSite:Navigation>/secondlvl<Vendor.SomeSite:ZweiteEbene>/main/menu` could not be rendered: The Fusion object `Neos.Fusion:Menu` is not completely defined (missing property `@class`). Most likely you didn't inherit from a basic object. For example you could add the following line to your Fusion: `prototype(Neos.Fusion:Menu) < prototype(Neos.Fusion:Template)`

root<Neos.Fusion:Case>/
 documentType<Neos.Fusion:Matcher>/
  element<Vendor.SomeSite:Page>/
   body<Neos.Fusion:Template>/
    navigation<Vendor.SomeSite:Navigation>/
     secondlvl<Vendor.SomeSite:ZweiteEbene>/

I have a lot of Templateseparation and some nested elements. Did you guys changed something critical @ 4.0 or did i miss something?

Thank you very much!

Regards,
Ben


(Daniel Lienert) #2

Hey Ben,

You are right, package:delete does not exist any more. The composer remove <packagename>
is sufficient. But the site:prune command should work as before. What was the problem with site:prune?

Have you applied the node migrations to your package? See https://www.neos.io/download-and-extend/upgrade-instructions-3-3-4-0.html

Yes, that is a change of the best practice. Fusion Prototypes which names equal the Document node Type are now automatically used to render the node as it is done with content node types.

Neos.Fusion:Menu

The correct prototype should be Neos.Neos:Menu

Not that I know of.

Hope that helps. If not, feel free to ask further questions.

Cheers,
Daniel