Drupal drupal_get_form - PullRequest
       23

Drupal drupal_get_form

2 голосов
/ 26 июля 2010

Я пытаюсь получить форму twitter_admin_form и twitter_user_settings в div.

/**
 * Get twitter form for user
 * @param $account
 * @type user object
 */
function getTwitterForm($account){
    //module_load_include('inc', 'twitter');
    module_load_all();
    $twitter_form =  drupal_get_form('twitter_admin_form');
    return $twitter_form;
}

Я получаю ошибку drupal.

предупреждение: call_user_func_array () [function.call-user-func-array]: ожидается, что первым аргументом будет допустимый обратный вызов, twitter_admin_form был указан в ... / includes / form.inc в строке 372.

twitter.module

/**
 * Implementation of hook_meu()
 */
function twitter_menu() {
  $items = array();

  $items['admin/settings/twitter'] = array(
    'title' => 'Twitter setup',
    'description' => 'Twitter module settings',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('twitter_admin_form'),
    'access arguments' => array('administer site configuration'),
    'file' => 'twitter.pages.inc'
  );

  $items['user/%user_category/edit/twitter'] = array(
    'title' => 'Twitter accounts',
    'page callback' => 'twitter_user_settings',
    'page arguments' => array(1),
    'access arguments' => array('add twitter accounts'),
    'load arguments' => array('%map', '%index'),
    'weight' => 10,
    'file' => 'twitter.pages.inc',
    'type' => MENU_LOCAL_TASK,
  );

  return $items;
}

Я не уверен, что делаю не так.У twitter_admin_form нет аргументов, поэтому я подумал, что будет просто получить и отобразить.

Я - новые формы / меню, поэтому я не уверен на 100%, что такое% user_category,% map и% index и как их передать.

Откуда вы знаете, что такоедопустимые формы есть?

Ответы [ 2 ]

3 голосов
/ 26 июля 2010

Когда вы вызываете drupal_get_form, вы предоставляете идентификатор формы, который является функцией, которую должен вызывать Drupal. Проблема, с которой вы столкнулись, состоит в том, что Drupal не может найти функцию: twitter_admin_form.

Либо он находится во включаемом файле, и вам необходимо включить его, либо вы назвали его как-то еще.

2 голосов
/ 26 июля 2010

Ошибка, которую вы получаете от линии:

$twitter_form = drupal_get_form('twitter_admin_form');

Ожидается, что twitter_admin_form будет допустимой функцией обратного вызова, но не может ее найти. Вероятно, это связано с тем, что связанный файл 'twitter.pages.inc' не включен во время вашего звонка.

Вы можете исправить это через:

module_load_include('inc', 'twitter', 'twitter.pages');

(Учитывая закомментированную строку в вашем примере кода, вы, похоже, пробовали что-то подобное, но забыли указать имя файла для включения).

...