Approach how to create a new node in a form on the frontend (public visitor)

Hi, I am looking for examples / good practices.

For a given a node type (let say: CalendarEvent), I need a custom form on the frontend for every visitor to submit and create a new node (use case: a visitor can suggest a new event). For that, I have started the classical approach with a controller (let say: CalendarFormController). I am aware, how to create a node and store a node in my controller action. However, how should the form look like in Fluid? I would submit the data as array and have a TypeConverter in my “initializeAction”. Also the validation is not very clear how I should proceed.

Or do you see another approach? With more core bricks ? Code example?

You can solve it, for example, with the form builder and a custom finisher which creates the corresponding nodes.

I did that for a community office. They offer the creation of an event with date, picture and text. These are created as nodes and displayed in the news overview. These can thus also be edited and supplemented by Neos editors.

Ah, thanks, very good tip. I will try this approach and come back in case.

For reference my answer in Slack copied over to here:

one of the few examples of this I know of is in here, but the code is quite old, it should mostly work, just be aware:

you should also find the respective form and all in there.

I woudl generally try to avoid creating nodes from the frontend though, maybe rather store the even suggestion as a model and provide a backend module for editors to convert those into actual nodes, that feels a bit more controlled to me.