[eZ publish] (Tranfer) Build a form use the information collector
Creating a custom form
To do this, log in to the Administration Interface and click on the Setup tab. In the left menu, click the Classes link:
Add attribute
Note that the attributes that will collect information (through form fields presented to the visitor) need to have the Information collector checkbox marked:
Information collector checkbox
Rather than repeating theexplanation of the steps to add each attribute, the information for allthe attributes is summarized in the table below:
Name |
Identifier |
Datatype |
Required |
Searchable |
Information collector |
---|---|---|---|---|---|
Form Name |
form_name |
Text line |
Yes |
Yes |
No |
Form Introduction |
form_introduction |
XML block |
No |
Yes |
No |
Given Name |
given_name |
Text line |
Yes |
No |
Yes |
Family Name |
family_name |
Text line |
Yes |
No |
Yes |
Date of Birth |
date_of_birth |
Date |
Yes |
No |
Yes |
Contact Phone Number |
contact_phone_number |
Text line |
Yes |
No |
Yes |
Email Address |
email_address |
|
Yes |
No |
Yes |
Postal Address |
postal_address |
Text block |
Yes |
No |
Yes |
Please send me information about the club's tennis tournaments |
option_play_in_tournaments |
Checkbox |
No |
No |
Yes |
Please send me information about tennis classes and professional coaching |
option_classes_and_coaching |
Checkbox |
No |
No |
Yes |
I would like to receive the monthly club newsletter by email |
option_club_newsletter |
Checkbox |
No |
No |
Yes |
Please keep me informed about the club's social events and competitions |
option_social_events_ |
Checkbox |
No |
No |
Yes |
Can we help by answering any questions? |
other_questions |
Text block |
No |
No |
Yes |
Membership Coordinator E-mail Address |
membership_coordinator_email_ |
|
Yes |
No |
No |
When using the first method, thepage will automatically reload with the attribute order changed.However, if the attributes are renumbered using the second method, youmust click the Apply button (or OK button if you are finished editing the class) to store the changes.
Saving the new class
Once you have entered all the relevant attribute information, click the OK button to add the new class.
The next step is to modify the appropriate INI settings in order to configure the form.
Defining how information is collected
The settings/collect.ini file contains some useful form options.
Recall from the first article in this seriesthat eZ Publish reads basic settings from the default INI files, whichare overriden by any settings in the specific siteaccess overrides,which are overridden by settings in the global override files. Youshould never modify the default INI files.
The settings below should be created in the file collect.ini.append.php located either:
-
In the directory for the siteaccess (in settings/siteaccess/[name_of_siteaccess]/) that will display the form; or
-
In the override directory (in settings/override/), meaning it will apply to all siteaccesses.
If the override file does not already exist, you must create it.
The sections below show thesettings that need to be included in the INI file. Note that linesstarting with hash symbols are comments.
[InfoSettings] block
The setting below specifies thatthere is an information collector based on the class ID“membership_application_form”, and that the identifier for theinformation collector is the same as the class name.
[InfoSettings] # Matches class id or identifier to information collection type TypeList[membership_application_form]=membership_application_form
[EmailSettings] block
Sometimes it is useful to send anemail summarizing the results of each form submission. This is notrequired for objects such as polls, but we will use it in ourmembership application form.
[EmailSettings] # Matches class id or identifier to information collection type # SendEmailList[poll]=disabled SendEmailList[membership_application_form]=enabled
[DisplaySettings] block
The DisplayList setting specifies the page that should be loaded after the form is submitted. There are three main options:
[DisplaySettings] # result - Display IC result, for instance poll result or your form data # redirect - Redirect to a specific url # node - Redirect back to content node # Matches class id or identifier to information collection type #DisplayList[poll]=result DisplayList[membership_application_form]=result
[CollectionSettings] block
Some forms need to be available to anonymous users. This is determined by the setting below.
[CollectionSettings] # if enabled then information from anonymous users can be collected # CollectAnonymousData=enabled # Same as CollectAnonymousData but is a list of IC types and # their override settings, if specified it will override default setting CollectAnonymousDataList[membership_application_form]=enabled
# How information collection is handled in terms of user identification # # multiple - each user can submit multiple data # unique - one set of data per user, if already exists give a warning # overwrite - one set of data per user but new entry overwrites old one CollectionUserData=multiple # Matches class id or identifier to information collection type #CollectionUserDataList[feedback]=multiple CollectionUserDataList[membership_application_form]=multiple
Making the form visible in the site’s menus
eZ Publish does not automaticallyinclude objects of a new class in the default top or left site menus.For example, the top menu displays the objects that are directly belowthe top-level node of the Content branch, but only for the classesspecified in menu.ini. Similarly, the left menu displays theobjects that are directly below the second-level node that is currentlybeing viewed, but also only for the classes specified in menu.ini. The new Membership Application Form class needs an entry in the relevant menu.ini file.
This example uses the Website Interface extension, so either of these settings override files can be edited:
/extension/ezwebin/settings/menu.ini.append.php
OR
/settings/override/menu.ini.append.php
The entries added are shown below.
menu.ini settings
This may not be necessary for allforms if you do not need them to be visible in the top or left menus(for example, if you are just going to link to the form in the body ofan article). In our case, we have added the appropriate entries to boththe TopIdentifierList setting (objects of these classes are shown inthe flat_top menu template at extension/ezwebin/design/ezwebin/templates/menu/flat_top.tpl), and the LeftIdentifiersList setting (objects of these classes are shown in the flat_left menu template at extension/ezwebin/design/ezwebin/templates/menu/flat_left.tpl).
Menu areas