Archief - Drupal Form API

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Ultimus

Legacy Member
Hallo iedereen,

Ik ben onlangs met drupal begonnen maar zit met de form api in de problemen. ik heb de tutorial gevolgd op drupal. Ik krijg geen extra forum toegevoegd in mijn module.

Ik doe iets verkeerd en hoop dat iemand hier deze noob even wil helpen. Hierbij alvast de code:

Code:
<?php

function my_module_menu() {
  $items = array();
  $items['my_module/form'] = array(
    'title' => t('My form'),
    'page callback' => 'my_module_form',
    'access arguments' => array('access content'),
    'description' => t('My form'),
    'type' => MENU_CALLBACK,
  );
  $items['my_module/categoryform'] = array(
    'title' => t('Change Category'),
    'page callback' => 'my_module_categoryform',
    'access arguments' => array('access content'),
    'description' => t('Change Category'),
    'type' => MENU_CALLBACK,
  );
  return $items;
}

function my_module_form() {
  return drupal_get_form('my_module_my_form');
}

function my_module_categoryform(){
	return drupal_get_form('my_module_my_categoryform');
}

function my_module_my_categoryform($form_state){

	   
	$result = db_query("SELECT * FROM {FOT_CATEGORY} WHERE ID = %d", arg(2));
    $node = db_fetch_object($result);
    $name = $node->NAME;
    $description = $node->DESCRIPTION;
    $_SERVER['cat_name'] = $name;
    $_SERVER['cat_description'] =$description;
    $_SERVER['cat_id']=$node->ID;
	
	$form['Name'] = array(
		'#type' => 'textfield',
		'#title' => 'Category name',
		'#required' => TRUE,
		'#default_value' => $name,
		);
		
	$form['Description'] = array(
		'#type' => 'textarea',
		'#title' => 'Descritpion',
		'#required' => TRUE,
		'#default_value' => $description,
		);
	
	return form;
}

function my_module_my_form($form_state) {
  $form['name'] = array(
    '#type' => 'fieldset',
    '#title' => t('Name'),
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
  );
  $form['name']['first'] = array(
    '#type' => 'textfield',
    '#title' => t('First name'),
    '#required' => TRUE,
    '#default_value' => "First name",
    '#description' => "Please enter your first name.",
    '#size' => 20,
    '#maxlength' => 20,
  );
  $form['name']['last'] = array(
    '#type' => 'textfield',
    '#title' => t('Last name'),
    '#required' => TRUE,
  );
  $form['year_of_birth'] = array(
    '#type' => 'textfield',
    '#title' => "Year of birth",
    '#description' => 'Format is "YYYY"',
  );  
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Submit',
  );
  return $form;
}

function my_module_my_form_validate($form, &$form_state) {
    $year_of_birth = $form_state['values']['year_of_birth'];
    if ($year_of_birth && ($year_of_birth < 1900 || $year_of_birth > 2000)) {
        form_set_error('year_of_birth', 'Enter a year between 1900 and 2000.');
    }
}

// Adds a submit handler/function to our form to send a successful 
// completion message to the screen.


function my_module_my_form_submit($form, &$form_state) {
    drupal_set_message(t('The form has been submitted.'));
}

?>

demon326

Legacy Member
Ultimus zei:
Hallo iedereen,

Ik ben onlangs met drupal begonnen maar zit met de form api in de problemen. ik heb de tutorial gevolgd op drupal. Ik krijg geen extra forum toegevoegd in mijn module.

Ik doe iets verkeerd en hoop dat iemand hier deze noob even wil helpen. Hierbij alvast de code:

Wat is het exacte probleem en voor wat moet het form dienen? Als het moet dienen om bvb een wedstrijd form te maken, gebruik dan de webform module :)

Ultimus

Legacy Member
demon326 zei:
Wat is het exacte probleem en voor wat moet het form dienen? Als het moet dienen om bvb een wedstrijd form te maken, gebruik dan de webform module :)

ok, dat had ik er moeten bijvertellen :) als het gaat over simpele mail formuliertjes dan kan de webform idd heel handig zijn. Mijn formulier gaat op basis van een argument in de url, een databank entry uitlezen. Dit zou hij dan moeten laden in de default_value, bij indienen van het formulier moet hij dan de wijzigingen gaan opslagen in de databank en daarvoor heb ik form api nodig en volstaat de webform niet.

Ultimus

Legacy Member
Mensen, laat maar! wederom een domme menselijke fout natuurlijk! title => t('xxxx')!

demon326

Legacy Member
Ultimus zei:
Mensen, laat maar! wederom een domme menselijke fout natuurlijk! title => t('xxxx')!

Het zijn altijd de kleine dingen hé! Hoe hebt ge het gevonden? :unsure:

Ultimus

Legacy Member
demon326 zei:
Het zijn altijd de kleine dingen hé! Hoe hebt ge het gevonden? :unsure:

op zoek gegaan naar de code waar de fout in zat door middel van stukken in comment te plaatsen. Vervolgens kwam ik uit op mijn formulier. Op de drupal form api site gaan kijken naar de verplichte waarden en zo gemerkt dat mijn titel niet het juiste formaat had. :doh:

dJeez

Legacy Member
Je weet toch dat je (mits wat basissetup) ook makkelijk PHP scripts kan debuggen met Xdebug hé? Quasi elke IDE heeft daar ondersteuning voor en het is net iets makkelijker om stap voor stap door code te gaan (al dan niet dmv breakpoints).
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan