Plone ships with the CMFFormController product, which can be used to manage the flow of control between forms and scripts, optionally taking into account which button was pressed or invoking validators. It can be quite useful for complex page flows, but is becoming less important since it does not work with Zope 3 views. It can also be a little cumbersome because it spreads the form logic across multiple files. Still, a lot of products and a number of forms in Plone itself use it. Note that form controller templates and scripts can only be defined in skin layers.
Let us look at an example. Plone’s Send this page to someone form is defined in
.cpt extension declaring it as a ...