I've added example_element.module to demonstrate how to create a new form item #type. I'd love some reviews.

Comments

sime’s picture

Looks good to me, just need to build up the comments. If it's of any use to you, here is an attempt at a nice user-friendly description of hook_elements.

"Form elements are already familiar to anyone who uses Forms API. Examples of core form elements are 'textfield', 'checkbox' and 'fieldset'. Drupal utilizes hook_elements() to define these FAPI types, and this occurs in the core function system_elements().

By implementing hook_elements in your own module, you can create custom form elements with their own properties, validation and theming."

eaton’s picture

"Each form element has a #type value that determines how it's treated by the Form API and how it's ultimately rendered into HTML. hook_elements() allows modules to define new element types, and tell the Form API what default values they should automatically be populated with."

dopry’s picture

I like it... You could go into more detail in the header php doc about just what an element is.... a predefined form array with sane defaults and processing + a theme function. I think thats what I gathered from IRC talking with eaton.

webchick’s picture

$element['#value'] = array('areacode'=>'', 'number'=>'', 'extension'=>'');

There needs to be a space between the => and the other stuff.

'#description' => t("Another phone number, a fax perhaps?"),

should be single quotes in the t().

(sorry, those are nit-picky, only because this will be an "example" module. VERY nice example, btw!)

I'd also throw some more comments in there, to match the other example* modules. Explain a bit more about hook_elements (just like a two-liner or so).

drewish’s picture

Status: Active » Fixed

cool, i've added everyone comments and corrections in. i'm going to assume it's good enough at this point. if people have more additions feel free to commit them directly.

Anonymous’s picture

Status: Fixed » Closed (fixed)