用户配置文件上的Drupal AJAX按钮

用户配置文件上的Drupal AJAX按钮,ajax,forms,button,drupal,Ajax,Forms,Button,Drupal,我尝试添加AJAX按钮已有一段时间了。我可以在表格上完成,如下所示: function hook_form_alter(&$form, &$form_state, $form_id) { $form['suspend'] = array( '#type' => 'button', '#name' => 'foo', '#value' => t('bar'), '#aj

我尝试添加AJAX按钮已有一段时间了。我可以在表格上完成,如下所示:

function hook_form_alter(&$form, &$form_state, $form_id) {
$form['suspend'] = array(
            '#type' => 'button',
            '#name' => 'foo',
            '#value' => t('bar'),
            '#ajax'  => array('callback' => '_foo_bar'),
        );

return $form;
}
function hook_user_view_alter(&$build) {
$build['suspend'] = array(
            '#type' => 'button',
            '#name' => 'foo',
            '#value' => t('bar'),
            '#ajax'  => array('callback' => '_foo_bar'),
        );

return $build;
}
工作很好。但是,我无法将其用于用户配置文件或非表单,例如:

function hook_form_alter(&$form, &$form_state, $form_id) {
$form['suspend'] = array(
            '#type' => 'button',
            '#name' => 'foo',
            '#value' => t('bar'),
            '#ajax'  => array('callback' => '_foo_bar'),
        );

return $form;
}
function hook_user_view_alter(&$build) {
$build['suspend'] = array(
            '#type' => 'button',
            '#name' => 'foo',
            '#value' => t('bar'),
            '#ajax'  => array('callback' => '_foo_bar'),
        );

return $build;
}
有没有简单的方法可以做到这一点?我在这个网站上使用块和视图,如果可能的话,我不想安装面板(:


谢谢!

如果它不在表单中,请将其包装到表单中:

function example_suspend_form($form, &$form_state) {
  $form['suspend'] = array(
    '#type' => 'button',
    '#name' => 'foo',
    '#value' => t('bar'),
    '#ajax'  => array('callback' => '_foo_bar'),
  );

  return $form;
}

function example_user_view_alter(&$build) {
  $build['example_suspend_form'] = drupal_get_form('example_suspend_form');
}