首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用按钮关闭画布对话框

使用按钮关闭画布对话框
EN

Drupal用户
提问于 2018-10-23 05:45:41
回答 2查看 728关注 0票数 0

我正在尝试适应Drupal8.5中引入的相对新的离开画布对话框。

建议将其与Drupal Form-API和如下链接元素一起使用:

代码语言:javascript
复制
$form['off_canvas'] = [
  '#title'      => 'Some title',
  '#type'       => 'link',
  '#url'        => \Drupal\Core\Url::fromRoute('some route'),
  '#attributes' => [
    'class'                => ['use-ajax'],
    'data-dialog-type'     => 'dialog',
    'data-dialog-renderer' => 'off_canvas',
    'data-dialog-options'  => \Drupal\Component\Serialization\Json::encode(['width' => '40%']),
  ],
  '#attached'   => [
    'library' => [
      'core/drupal.dialog.ajax',
    ],
  ],
];

这是非常直接和开箱即用的,但是对于一个非常特殊的用例,我需要附加一个AJAX回调和一个按钮元素,在查看Drupal规范时不可能使用一个链接元素。

这就是我尝试使用一个按钮元素和一个带有离开画布对话框功能的回调:

代码语言:javascript
复制
$form['some_button'] = [
  '#type'     => 'button',
  '#value'    => 'some value',
  '#attached' => [
    'library' => [
      'core/drupal.dialog.ajax',
    ],
  ],
  '#ajax'     => [
    'callback' => '::some_callback',
  ],
];

回调函数位于以下位置:

代码语言:javascript
复制
public function some_callback(&$form, FormStateInterface $form_state) {

  $response = new \Drupal\Core\Ajax\AjaxResponse();

  $title = 'Some title';

  $content = 'Some content';
  $options = [];
  $response->addCommand(new \Drupal\Core\Ajax\OpenOffCanvasDialogCommand($title, $content, $options));
  return $response;
}

有趣的是:一旦使用$form['off_canvas']初始化了off画布对话框,它就可以同时处理$form['off_canvas']$form['some_button']的两个元素。在pageload上,它为$form['some_button']使用旧对话框,为$form['off_canvas']使用新的off画布对话框。

所以这一定是$form['some_button]的初始化问题。但是,我无法让它与页面负载的off画布对话框一起工作,而新的off画布功能的文档非常少见。

我试图告诉$form['some_button']在很多方面使用off画布作为参数,但它不起作用。我想我漏掉了一些东西。

你们能给我一个提示吗,从一开始就使用一个带有Ajax回调的按钮来完成这个任务?

EN

回答 2

Drupal用户

回答已采纳

发布于 2018-11-16 09:33:29

回到这个问题时,我确实注意到,在升级到最新的Drupal8.6.3之后,奇怪的行为已经消失。所有操作都如预期的那样,甚至使用一个按钮。

我无法从上面重现这种行为/错误。

票数 0
EN

Drupal用户

发布于 2021-07-27 14:03:38

如何将其调整为从javascript/jquery打开画布外对话框?我已经尝试过Drupal.dialog脚本,它只打开普通对话框。我还看到了Drupal.offCanvas {}脚本--它基本上是没有文档的。有什么建议吗?

票数 0
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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