Form declaration (from menu to submit)
Output a simple form, with validation and submit handlers
/* * Implementation of hook_menu() */ function mysnippet_menu() { 'title' => 'A basic form', 'description' => 'Example to create a form, validate and handle submitted values', 'page callback' => 'drupal_get_form', // we want a form 'access arguments' => array('basic permission'), //only users with this permission enabled have access to the form otherwise use 'access callback' => TRUE, ); return $items; } /* * Implementation of hook_form() */ function mysnippet_create_form($form, &$form_state) { //the documentation of the form API can be found here: http://drupal.org/node/1702548 '#type' => 'textfield', // we define a simple text field '#title' => 'What is your name?', '#description' => 'you can not enter here Drupal...', '#required' => TRUE, //we do not want an empty value ); return $form; } /* * Implementation of hook_form_validate() */ function mysnippet_create_form_validate($form, &$form_state) {//submitted values are hold in $form_state['values'] // dpm($form_state['values']) //to see them all if($form_state['values']['name']=='Drupal') { // we verify that the name is not Drupal form_set_error('name', 'You can not use Drupal here...'); // if yes we set an error on the field name } } /* * Implementation of hook_form_submit() */ function mysnippet_create_form_submit($form, &$form_state) { //we use variable_set to record our values in the database (table variable) //we display a confirmation message }
Display errors - WSOD
The bootstrap override the values you could set to display error ad the reporting level. To be 100% sure everything is printed out when something fails in a blank screen (wsod), make index.php like this:
Properly render a field
Drupal offers a few (sometimes complicated...) solutions to output a field. Lets take an example with a date field.
To display the full rendered field: field_view_field()
Using once()
ensure ajax reload don't apply the behaviours for items already processed
Change the theme
Programmatically change the theme on runtime by implementing hook_custom_theme()
Manually clear caches
for views and panels
Add a Jquery ui library
get the library names to use in /misc/ui folder
Embed a custom page
Get the rendered output of a custom page created with page manager (ctools) module
Embed a mini panel
Get the html output of a mini-panel
alter / automatize the install process
in the .profile file of the install profile (here "mysnippet" profile)
Aegir: perform custom tasks after a new site is installed
in a custom module, in a file called mysnippet.drush.inc (keep in mind that the install process is handled by drush...)
- ‹ previous
- 4 of 5
- next ›