Drupalは:「削除」ボタンは、AJAXを使用してプレスした後、どのように私は、UIを形成し修正するのですか?

StackOverflow https://stackoverflow.com/questions/2082591

  •  21-09-2019
  •  | 
  •  

質問

私はDrupalの6を使用していますが、AJAXモジュールがインストールされています。私は、次のコードを持っています:

function remove_manufacturer_role_form($form_state) {
  $form['#ajax'] = array(
    'enabled' => TRUE
  );
  $form['hidden'] = array('#type' => 'value', '#value' => 'is_it_here');
  $form['submit'] = array('#type' => 'submit', '#value' => t('Remove yourself as manufacturer'));
  return $form;
}

function remove_manufacturer_role_form_submit($form, &$form_state) {
     $current_vars = ogrolerequestmanufacturerblock_get_current_vars();

     if( $current_vars )
     {
    $curr_gid = $current_vars['current_gid'];
    $curr_uid = $current_vars['current_user_id'];
    $delete_query = "DELETE FROM {og_users_roles} WHERE rid in (SELECT rid FROM {role} WHERE name='Manufacturer') AND uid=$curr_uid AND gid=$curr_gid";
    if( db_query($delete_query) )
        drupal_set_message("You successfully removed yourself as a manufacturer from this project");
     }
}
基本的に、私はプロジェクト内メーカーとしてユーザーを削除するためのフォームを持っています。ユーザーは、自分自身を削除する機能を備えています。このフォームは、ユーザーが順番に、フォームを送信し、データベースからメーカーとして、ユーザーの役割を削除し、それが成功したかどうかをユーザーに通知するためにAJAXを使用してボタンをクリックすることができます。それが正常にAJAXを使用して呼び出しを行い、それが必要のような役割が削除されますが、フォームはまだそれに示す削除ボタンがあります。ユーザーがもう一度ボタンをクリックした場合には、削除するものは何もありませんエラーB / Cを与えます。これはOKですが、私推測し、B /それは致命的なエラーではなく、実際には何も影響はありませんで...しかし、それはユーザーのためにかなりではありません。

それが提出されると示されている私は、フォームを、モジュールのブロックを更新または変更できる方法はありますか?

編集

これは良い解決策のように思えるが、私はかなりそれが動作し得るように見えることはできません。私は私のモジュール内delete.jsのJavaScriptを含めました。

/**
 * Ajax Forms plugin for ogrolerequestmanufacturerblock 
 *
 * @param {String} hook
 * @param {Object} args
 * @return {Bool}
 */

Drupal.Ajax.plugins.ogrolerequestmanufacturerblock = function(hook, args) {
alert('it got into javascript!');
    if (hook === 'submit') {
        alert('submit called within javascript!');
    }
    return true;
}

このJavaScript関数に入るように見えることはありません。どのようにDrupalのノウハウは、この特定の関数を呼び出すのですか?

役に立ちましたか?

解決

あなたはAJAXを通じて来て、戻り値を確認することができますし、除去が成功した場合、削除ボタンをdisplay: noneを行うことができます。

AJAXモジュールのドキュメントを見て、私はあなたがDrupal.Ajax.plugins.FOO(hook, args)を実装する必要があると思います。ときhook == complete、あなたがdisplay: noneにあなたのボタンを設定することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top