Drupal 7在表单之间切换

时间:2012-07-04 09:09:17

标签: php forms drupal drupal-7

我是drupal的新手,需要创建一个我已经成功完成的登录表单。但是当我登录时,我希望将表单切换到另一种形式,您可以在其中编辑您的详细信息。

我无法找到如何在表格之间切换。

<?php

/**
 * Implements hook_help.
 *
 * Displays help and module information.
 *
 * @param path 
 *   Which path of the site we're using to display help
 * @param arg 
 *   Array that holds the current path as returned from arg() function
 */

function login_kms_help($path, $arg) {
  switch ($path) {
    case "admin/help#login":
      return '<p>'.  t("Creates login module") .'</p>';
      break;
  }
} 

/**
 * Implements hook_block_info().
 */
function login_kms_block_info() {
   $blocks['login_kms'] = array(
    'info' => t('Login KMS'), //The name that will appear in the block list.
    'cache' => DRUPAL_CACHE_PER_ROLE, //Default
  );
  return $blocks;
}

function login_kms_block_view($delta = '') {
  $block = array();
  if($delta == 'login_kms') {
    $block['subject'] = 'Login';
    $block['content'] = drupal_render(drupal_get_form('login_kms_form_mode0'));
  } else if($delta == 'login_kms'){
    $block['subject'] = 'Edit';
    $block['content'] = drupal_render(drupal_get_form('login_kms_form_mode1'));
  }
  return $block;
}

function login_kms_form_mode0() {
  $form['username'] = array(
    '#type' => 'textfield',
    '#title' => t('Username:'),
  );
   $form['password'] = array(
    '#type' => 'password',
    '#title' => t('Password:'),
  );
  $form['Log in'] = array(
    '#type' => 'submit',
    '#value' => t('Log in'),
  );
  return $form;
}

function login_kms_form_mode1(){
  $form['username'] = array(
    '#type' => 'textfield',
    '#title' => t('mode1'),
  );
}

function login_kms_form_submit($form, &$form_state) {
    $mysql_user = $form_state['values']['username'];
    $mysql_pass = $form_state['values']['password'];
//  drupal_set_message(t($mysql_pass)); 
// some logic

}  

2 个答案:

答案 0 :(得分:1)

第一种方法是使用drupal_goto(“my_path”)。 第二个,更“正确”是使用$ form_state ['redirect']或$ form ['#redirect'],就像这样;

function login_kms_form_submit($form, &$form_state) {
$mysql_user = $form_state['values']['username'];
$mysql_pass = $form_state['values']['password'];
//  drupal_set_message(t($mysql_pass)); 
// some logic
$form_state['redirect'] = 'user/to_the_new_form';

}

答案 1 :(得分:0)

您只需使用drupal_goto()将登录用户重定向到其他表单。

global $user;
if(!empty($user->uid) || $user->uid > 0)
{
    drupal_goto("my/new/page");
}

希望这有效......穆罕默德。