Drupal的:如何修改表单UI之后,“删除”按钮使用AJAX按下?
-
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没有要删除。这是确定的,我猜,B / C它不是一个致命错误,并没有真正影响什么......但是,这不是漂亮的用户。
有一种方法我可以刷新模块的块或修改的形式,一旦它被提交时显示?
修改强>
这似乎是一个很好的解决方案,但我不能完全似乎得到它的工作。我已经包括了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
。
不隶属于 StackOverflow