0

フック _menu の実装

<?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,
      );
      return $items;
    }

    function my_module_form() {
      return drupal_get_form('my_module_my_form');
    }
    // created the custom fields using form api
    function my_module_my_form($form_state) {
      $form['name'] = array(
        '#type' => 'textfield',
        '#title' => t('Name'),
         );
      $form['phone']= array(
        '#type' => 'textfield',
        '#title' => t('Phone Number'),   
        '#maxlength' => 10, 
        '#size' => 10,
        );
      $form['email']= array(
      '#type' => 'textfield',
      '#title' => 'Email',
      '#rules' => array(
        'email',
        ),
       );

      // New form field added to permit entry of year of birth.
      // The data entered into this field will be validated with
      // the default validation function.
      $form['address'] = array(
        '#type' => 'textfield',
        '#title' => "address",
         );
     $form['choice'] = array(
    '#type' => 'radios',
    '#title' => t('Gender'),
    '#options' => array(
    t('Male'),
    t('Female'),
    t('Transgender'),
    )
    );
      $form['submit'] = array(
        '#type' => 'submit',
        '#value' => 'Submit',
        '#submit' => array('my_module_my_form_submit'),
      );
      return $form;
    }
    Done some validation for the form fields 
    function my_module_my_form_validate($form, &$form_state) {
      $regex = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/'; 
      $phone = $form_state['values']['phone'];
      $name = $form_state['values']['name'];
      $email = $form_state['values']['email'];
      $address = $form_state['values']['address'];
      $choice = $form_state['values']['choice'];

      if (!$name) {
            form_set_error('name', 'Please enter your name.');
        } 
      if (!$phone) {
            form_set_error('phone', 'Please enter your Phone Number.');
        }
      if (!$email) {
            form_set_error('email', 'Please enter your Email.');
        }
    else if (!preg_match($regex, $email)) {
         form_set_error('Email', 'Enter correct Email');
    } 
      if (!$address) {
            form_set_error('address', 'Please enter your Address.');
        }
        if (!isset($choice) )
        {
            form_set_error('choice', 'Please enter your Gender.');
        }
       if (!preg_match('/^[1-9][0-9]*$/',$phone)) {
            form_set_error('phone', 'Enter correct phone number');
      }  

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

?> drupal を初めて使用するので、フォーム Api を使用して drupal でノード保存を実装する方法を知る必要があります

  1. フィールドは送信時に検証されています。フォームの結果を従業員タイプのコンテンツ ページに保存する必要があります。
  2. 従業員コンテンツ タイプを作成しました。フィールドは次のとおりです。

名前 電話 メール アドレス 性別 従業員タイプのコンテンツにフォームの値を保存したいのですが、従業員はコンテンツ タイプが既に作成されています。

4

1 に答える 1

0

私は drupal を初めて使用します。Form Api を使用して drupal でノード保存を実装する方法を知る必要があります。

node_save() をそのまま使用してください。ノード オブジェクトを作成し、node_save($new_node); を呼び出す必要があります。これに似ている

$node = new stdClass(); // Create a new node object
$node->type = "article";// node's content type
node_object_prepare($node); // Set some default values
$node->title    = "Node title";
$node->language = LANGUAGE_NONE; 
$node->uid = 1; 
$node->body[$node->language][0]['value'] = 'body text';
node_save($node);

「devel」モジュールを使用してノード オブジェクトの構造を調べることができます (ノード ページに「devel」タブを提供します)。また、 http://fooninja.net/2011/04/13/guide-to-programmatic-node-creation-in-drupal-7/などのより詳細なガイドを読むこともできます。

于 2013-10-30T07:54:13.787 に答える