0
안녕하세요 모두 Drupal 8 EventSubscriber 클래스는 DrupalSettings를 Drupal 8 JavaScript 설정에 연결해야합니다. 하지만 불행히도이 \ Drupal :: service ('renderer') -> renderRoot ($ js_data); drupal 자바 스크립트 설정을 첨부하지 않습니다.Drupal 8 #attached는 eventsubscriber 내에서 작동하지 않습니다
namespace Drupal\ejectorseat\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Drupal\Core\Url;
class EjectorseatSubscriber implements EventSubscriberInterface {
public function customEjector(GetResponseEvent $event) {
$account = \Drupal::currentUser();
$ejectorseat_interval = \Drupal::config('ejectorseat.settings')->get('ejectorseat_interval');
if(empty($ejectorseat_interval)){
$ejectorseat_interval = 60;
}
$ejectorseat_background = \Drupal::config('ejectorseat.settings')->get('ejectorseat_background');
if(empty($ejectorseat_background)){
$ejectorseat_background = 0;
}
if ($account->id() > 0 && (int) $ejectorseat_interval) {
$js_data = array();
$js_data['#attached']['drupalSettings']['ejectorSeat']['interval'] = $ejectorseat_interval;
$js_data['#attached']['drupalSettings']['ejectorSeat']['url'] = Url::fromRoute('ejectorseat/check');
$js_data['#attached']['drupalSettings']['ejectorSeat']['ignoreFocus'] = $ejectorseat_background ? TRUE : FALSE;
\Drupal::service('renderer')->renderRoot($js_data);
}
}
public static function getSubscribedEvents() {
$events[KernelEvents::REQUEST][] = array('customEjector');
return $events;
}
}