Drupal 8中的ajax_command_append

时间:2016-04-17 04:27:05

标签: drupal drupal-8

我想在链接点击上按ajax显示项目列表。我的链接html是

<a class="get-list use-ajax ajax-processed" href="get-my-list">My List</a>

我可以在Drupal 7中通过以下方式执行此操作:

return array(
    '#type' => 'ajax',
    '#commands' => array(
      ajax_command_append('#my-wrapper', theme('item_list', array('items' => $my_list, 'attributes' => array('class' => array('my-list'))))),
    ),
  );

如何在Drupal 8中返回这样的ajax回调?

1 个答案:

答案 0 :(得分:2)

您可能需要查看drupal 8 Ajax API(https://api.drupal.org/api/drupal/core!core.api.php/group/ajax/8

您可以定义自己的回调函数,或者如果您有链接,则可以转到控制器的方法。在这里,您必须定义AjaxResponse并将命令放在响应中。

这是我项目的一个例子。

链接建立

$build['ajax-link'] = [
        '#title' => '',
        '#type' => 'link',
        '#id' => 'ajax-link',
        '#url' => $url,
        '#ajax' => [
          'event' => 'click',
          'progress' => [
            'type' => 'none',
          ],
        ],
        '#attributes' => [
          'class' => [
            'fa fa-heart-o fa-2x ' . $activeClass,
          ],
          'title' => 'Ajax heart',
        ],
      ];

它调用的控制器方法

$response = new AjaxResponse();
$response->addCommand(new ReplaceCommand('#ajax-link', $this->subscribeElementGenerator->generateSubscribeElement($event)));
return $response;

ReplaceCommand只是重新生成链接以更新它。