Using behaviors¶
Finding and adding behaviors
Dexterity introduces the concept of behaviors – re-usable bundles of functionality and/or form fields which can be turned on or off on a per-type basis.
Each behavior has a unique interface. When a behavior is enabled on a
type, you will be able to adapt that type to the behavior’s interface.
If the behavior is disabled, the adaptation will fail. The behavior
interface can also be marked as an IFormFieldsProvider
, in which case
it will add fields to the standard add and edit forms. Finally, a
behavior may imply a sub-type: a marker interface which will be
dynamically provided by instances of the type for which the behavior is
enabled.
We will not cover writing new behaviors in this manual, but we will show how to enable behaviors on a type. Writing behaviors is covered in the Behaviors manual.
In fact, we’ve already seen one standard behavior applied to our example types, registered in the FTI and imported using GenericSetup:
<property name="behaviors">
<element value="plone.app.content.interfaces.INameFromTitle" />
</property>
Other behaviors are added in the same way, by listing additional
behavior interfaces as elements of the behaviors
property.
Behaviors are normally registered with the <plone:behavior />
ZCML
directive. When registered, a behavior will create a global utility
providing IBehavior
, which is used to provide some metadata, such as a
title and description for the behavior.
You can find and apply behaviors via the Dexterity Content Types control panel that is installed with plone.app.dexterity. For a list of standard behaviors that ship with Dexterity, see the reference at the end of this manual.