开发者

Drupal drupal_get_form

I trying to get the twitter_admin_form and twitter_user_settings form in a 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('twitt开发者_StackOverflower_admin_form');
    return $twitter_form;
}

I get a get a drupal error.

warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'twitter_admin_form' was given in .../includes/form.inc on line 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;
}

I'm not sure what I'm doing wrong. The twitter_admin_form doesn’t have any arguments hence I thought it would be simple to get and display.

I’m new forms/menu so I’m not 100% sure what %user_category, %map and %index are and how to pass them in.

How do you know what the valid forms are?


When you call drupal_get_form you supply a form id, which is the function that Drupal needs to call. The problem you are experiencing is that Drupal cannot find the function: twitter_admin_form.

Either it's located in an include file, and you need to include it, or you have named it something else.


The error you get stems from the line:

$twitter_form = drupal_get_form('twitter_admin_form');

It expects 'twitter_admin_form' to be a valid callback function, but can't find it. This is probably because the related file 'twitter.pages.inc' is not included at the time of your call.

You could fix that via a:

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

(Given the commented line in your code sample, you seem to have tried something like this, but forgot to give the name of the file to include).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜