在成功Ajax提交后,如何清除已渲染“Drupal消息”? [复制] -- 7 领域 和 ajax 领域 和 forms 领域 drupal 相关 的问题

How to clear already rendered “drupal messages” after successful ajax submit? [duplicate]


0
vote

问题

中文
这个问题已经在这里有一个答案
关闭 9年前

可能的重复:
删除tabledrag状态ajax提交

后,ajax提交和显示状态消息

我有一种自定义表单,将节点的"权重" 保存到自定义表中。表格有一个Ajax提交处理程序。该表单在使用 theme('table') 中呈现表格,并且它使用 drupal_add_dragtable 添加了可拖动的句柄。

因为表单通过ajax提交,所以诸如"在此表中的更改" 之类的消息,直到表单在提交表单"之前,即使表单也不会清除" 消息区域"中的任何其他消息提交并保存了值。

如何清除此消息区域?或者有没有办法钩住Ajax的"成功" 功能?或者在通过ajax提交表单后,它最有可能运行自定义JavaScript函数?这些可能性中的任何一个都会为我做。请建议。


我部分地通过返回来自回调函数的Ajax命令数组来解决这个问题。

特别是我返回以下命令:

  $commands = array(); $commands[] = ajax_command_html('#page-banners-status', theme('status_messages')); $commands[] = ajax_command_remove('.tabledrag-changed'); $commands[] = ajax_command_remove('.tabledrag-changed-warning');   

但是我现在遇到了一个新问题,即使在保存后删除了"表单之前未保存此表中的更改" ,即使在保存之后删除,如果表格删除在保存后进一步修改。我试图再次抓取表格并使用AJAX命令将其寄回:

  // my form function receives additional parameters $form = drupal_get_form('my_custom_form', $path, $tid); $commands[] = ajax_command_html('.table-container', drupal_render($form));   

但只要我从回调函数调用drupal_get_form时,它似乎打破了函数。

英文原文

Possible Duplicate:
Remove tabledrag statuses on Ajax submit and display status message after Ajax submit

I have a custom form which saves "weights" of nodes to a custom table. The form has an Ajax submit handler. The form is rendered in a table using theme('table') and it has draggable handles added using drupal_add_dragtable.

Because the form gets submitted via Ajax, the messages such as "Changes made in this table will not be saved until the form is submitted" and any other messages in the "message region" don't get cleared even if the form is submitted and the values are saved.

How do I clear this message area? Or is there a way to hook into the "success" function of the Ajax? Or is it at all possible to run a custom javascript function after the form is submitted via Ajax? Any one of these possibilities will do for me. Please advise.


I've partially succeeded in solving this by returning an array of ajax commands from my callback function.

In particular I return the following commands:

$commands = array(); $commands[] = ajax_command_html('#page-banners-status', theme('status_messages')); $commands[] = ajax_command_remove('.tabledrag-changed'); $commands[] = ajax_command_remove('.tabledrag-changed-warning'); 

but I've run into a new problem where now, even though the "Changes made in this table will not be saved until the form is submitted" message is removed after the save, it doesn't come back if the table is further modified after the save. I've tried to grab the form again and pass it back using an ajax command:

// my form function receives additional parameters $form = drupal_get_form('my_custom_form', $path, $tid); $commands[] = ajax_command_html('.table-container', drupal_render($form)); 

But whenever I call drupal_get_form from the callback function, it seems to break the function.

        
 
 

回答列表

1
 
vote

您可以通过两种方式进行,

第一个,

  function hook_preprocess_page(&$vars) {   //if(CHECK FOR THE FORM PAGE)   $vars['show_messages'] = 0;   $_SESSION['messages'] = '';   // END IF }   

第二个是

在表单的末尾提交回调写入以下代码

  unset($_SESSION['messages'])   

  $_SESSION['messages'] = '';   
 

You can do it in two ways,

First One,

function hook_preprocess_page(&$vars) {   //if(CHECK FOR THE FORM PAGE)   $vars['show_messages'] = 0;   $_SESSION['messages'] = '';   // END IF } 

Second One is

at the end of the form submit callback write the code like below

unset($_SESSION['messages']) 

or

$_SESSION['messages'] = ''; 
 
 
     
     

相关问题

2  蜜罐在自定义webforms(手册)  ( Honeypot in custom webforms manual ) 
我正在制作自定义表单(使用 drupal_render )添加字段,但由于我为所有Web表单启用了Honeypot,当我提交表单时,我收到以下消息: 表单提交存在问题。请等待X秒然后再试一次。 这是因为蜜罐标记没有包含在我的自定义形式中。 我有两个选项: 禁用此表​​单的蜜罐(通过从Drupal管理菜单中通过...

0  Drupal Behat测试通过具有给定字段的角色进行认证  ( Drupal behat test assert authenticated by role with given fields ) 
我正在尝试运行以下Behat步骤: @Given I am logged in as a user with the :role role(s) and I have the following fields: 这在68-106行上的DrupalContext.php中定义。我有一个标准的Behat从作曲家...

1  CSS移动兼容的耳机主题吗?  ( Css mobile compatible theme for drupal ) 
是否有CSS移动兼容的主题,用于DRUPAL? CSS移动兼容站点的示例: http://framelessgrid.com/ ...

1  将创建内容菜单项显示为Ananymous用户,但在点击中致电登录/注册弹出窗口的URL  ( Show create content menu item to ananymous users but call url for login register ) 
我认为这样做会很简单,但在很多搜索后,我找不到精确的解决方案。 所以问题是,我有2-3个主菜单项,我必须向匿名用户展示,但必须调用URL(用于登录/注册弹出窗口)&如果单击它们,请提示登录或注册。 我找到的最佳解决方案我找到了创建内容链接"node / add / node类型" 是类似的 - fu...

1  从Drupal的前端更改模块中的代码  ( Change the code in the module from the front end of drupal ) 
我已创建了我的自定义模块。我可以从Drupal的末尾编辑我的模块,然后将其前后提起并编辑模块。是否有任何模块为此目的? ...

7  如何在地图上有非确切的位置?  ( How can i have non exact locations on a map ) 
我正在使用gmap帮助用户在他们的地区找到其他人。但我想让用户拥有一些隐私,只能在地图中提供他们的城市和邮政编码,但仍然有数据库中的完整地址以用于邮寄。我怎样才能做到这一点? PIN在地图上的位置也应该仅基于城市和拉链,显然它可能是最精确的位置。 例如,让我们说总统在我们的网站上注册。他进入了他的完整地址,1600宾...

2  如何仅在滴水7中显示拖尾的图像  ( How to only display an image in the teaser for drupal 7 ) 
我目前正在使用stark主题的修改版本,在这个网站上自定义为我需要的东西,在这个网站上 tobynews 。然而,在一些新的设计灵感之后,我决定了,而不是在预告机中显示文本,我想要只显示图像。每个图像都将显示为网格。我需要帮助的是,正在获得预告片只是显示图像,而不是标题,日期或作者。 ...

3  有手风琴式菜单模块吗?  ( Is there an accordion style menu module ) 
我一直在搜索高低的模块,用于在D7中集成手风琴式菜单系统,类似于 http ://drupal.org/project/accordion_menu 。任何人都知道一个吗? ...

0  如何在Page.tpl.php文件中覆盖主题()部分?  ( How to override theme part in page tpl php file ) 
这个问题是这个问题的扩展:当前用户名标题为辅助菜单标题,但它是不同的。 我想如何覆盖代码 99887661 中的以下部分,其中 page.tpl.php 例如,如果我想将 text => t('Secondary menu') 更改为 text => t('Any new text') 。 一种方法来做这...

7  在视图中自定义第一个项目  ( Customising the first item in a view ) 
作为我的主页上的块,我正在尝试输出: <ul> <li><a><img><p>Node 1</p></a></li> <li><a>Node 2</a></li> <li><a>Node 3</a></li> <li><a>Node 4</a></li> </ul> 每个&lt; li&gt...

3  如何使视图排序区分大小写?  ( How to make views sorting case sensitive ) 
在视图中升序字母排序字符串字段如下所示: 1 2 3 a A b B 但我想要它: 1 2 3 A B a b 有没有办法来做这个? ...

13  Drupal 7的实体  ( Entities in drupal 7 ) 
drupal 7中的drupal实体是什么?我理解Drupal商业建造了产品作为实体。我现在知道有一个核心实体API和一个Control add for Entity API。 我今年有一些项目,我想使用Drupal 7,NoSQL,如果需要它,那么它可能会呼吁它 - 但我很难看到所需要的地方。 假设您正在构建一份...

0  如果页面URL包含“页面=”,则不会呈现使用视图创建的块  ( A block created with views is not rendered if the page url contains page ) 
我有一个奇怪的问题。我正在使用Drupal 7和Omega Subtheme。在视图中,我有一个块定义,它很棒 - 出现它在网站上都应该在网站上 - 除非URL有一个"?页面=" 。有些可能相关的信息:CLEAN_URL和PATHAUTO启用,已安装的三角形和布局,但没有定义DELTAS。 当我创建了一个页面视图(不...

0  是否停用模块安全的设置?  ( Is deactivating modules safe regarding settings ) 
在甚至在激活模块之前将模块上传到共享主机服务器后,我有一个奇怪的错误,甚至在激活模块(image_desaturate_formatter)之前。 porpexception:sqlstate [23000]:Integrity Constraint违规:1062复制条目的站点/全部/模块/ image_desa...

1  RTF与内联图像+字限制的模块?  ( Modules for rtf with inline images word limits ) 
我想允许我的所有网站的用户添加自己的博客文章,具有某些约束。 这是我想要给它们的表格: Title : Contents (RTF, max 700 characters) : Submit (or Login/Register then Submit) : 所有帖子的强制性: 在注释上启用读/写权限 ...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.