首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从AJAX回调中添加drupalSettings信息?

如何从AJAX回调中添加drupalSettings信息?
EN

Drupal用户
提问于 2018-07-15 18:49:47
回答 1查看 1.2K关注 0票数 0

我有一个定制的Drupal 7模块,它执行邮政编码查找以返回城镇和县。我在回调中将Drupal.settings.zip_code_success设置为true。这是我正在使用的代码。

代码语言:javascript
运行
复制
drupal_add_js(array('zip_code_success' => TRUE), 'setting');
$commands = array();
$commands[] = ajax_command_html('#triage_city', $out);
return array(
  '#type' => 'ajax',
  '#commands' => $commands,
);

然后,在js端运行的一些处理代码中可以获得zip_code_success值。

在将内容转移到Drupal 8时,查找和html替换都很好,但我不知道如何将zip_code_success信息输入drupalSettings。drupalSettings在初始页面生成中进行设置,并在DOM中显示最初通过hook_preprocess_html函数传递的值。我在but代码查找函数中尝试了很多东西,但是没有能够更新drupalSettings。下面是当前的D8代码片段,可与上面的D7进行比较:

代码语言:javascript
运行
复制
$response->addCommand(new SettingsCommand(['zip_code_success'=>TRUE] ,TRUE));
$response->addCommand(new HtmlCommand('#triage_city', $out));
return $response;

我也试过:

代码语言:javascript
运行
复制
$response->setAttachments([
  'library' => ['core/drupalSettings'],
  'drupalSettings' => ['zip_code_success' => TRUE]
]);
$response->addCommand(new HtmlCommand('#triage_city', $out));
return $response;

对于如何处理这种情况,有什么智慧吗?

EN

回答 1

Drupal用户

发布于 2018-07-16 01:48:03

在Drupal 8中,正如您所发现的,drupal_add_js()已经被删除。

你需要做两件事:

1)不能在ajax回调中添加JS。这在D7中是一个糟糕的实践,在D8中根本无法实现。您需要在表单定义中添加JS,而不是ajax回调。

2)通过两步过程添加JS。第一个是中创建一个新库。*.libraries.yml文件。向核心/药物设置添加一个依赖项。然后,在表单定义中添加如下设置:

代码语言:javascript
运行
复制
$form['some_element'] = [
  '#markup' => '', // required to render the element
  '#attached' => [
    'libraries' => [
      'some_library', // The library you created
    ],
    'drupalSettings' => [
      'modulename' => [
        'zip_code_success' => TRUE,
      ],
    ],
  ],
];
票数 2
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/265823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档