Drupalは:「削除」ボタンは、AJAXを使用してプレスした後、どのように私は、UIを形成し修正するのですか?
-
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
にあなたのボタンを設定することができます。