外部サーバーから一部のデータを読み込み、それをjavascript div要素に出力する関数を起動するイベントを設定しようとしています。私は多くの方法を試しましたが、このイベントを特定のノードタイプでのみ呼び出されるようにする方法がわかりません。
私がこれまでに得たコード:
class eSubscriber implements EventSubscriberInterface {
public static function getSubscribedEvents() {
$events[KernelEvents::RESPONSE][] = ['onRespond',27]; //so far it works on respond but on every page
return $events;
}
public function onRespond(FilterResponseEvent $event) {
//do some stuff
}
}
なんとかやりましたが、もっとうまくできると思います。
class eSubscriber implements EventSubscriberInterface {
public static function getSubscribedEvents() {
$events[KernelEvents::TERMINATE][] = ['onRespond',27];
return $events;
}
public function onRespond(PostResponseEvent $event) {
$node = \Drupal::routeMatch()->getParameter('node');
$user = \Drupal::currentUser();
$name = $user->getUsername();
$output = [];
if (isset($node) && isset($name)) {
$nodeType = $node->getType();
$soap_response = new classThatHandleRequests();
$output = $soap_response -> get_clients_fv($name);
echo('<script>var JSONarray = ' . print_r($output,1) . ';</script>');
}
}
}