События пометки не связаны с ответами, поэтому вы не сможете вернуть их оттуда. Иной подход заключается в создать абонента маршрута, и измените flag.action_link_flag и flag.action_unlink_flag маршруты, заменив контроллер на свой собственный, например.
защищенная функция alterRoutes(RouteCollection $ collection) {
если ($ маршрут = $ коллекция-> получить ('flag.action_link_flag')) {
$route->setDefault('_controller', 'Drupal\custom_module\Controller\CustomController::flag');
}
если ($ маршрут = $ коллекция-> получить ('flag.action_link_flag')) {
$route->setDefault('_controller', 'Drupal\custom_module\Controller\CustomController::unflag');
}
}
Ваш собственный контроллер будет расширять исходный контроллер флага (Друпал\флаг\контроллер\экшнлинкконтроллер), используйте его методы для создания исходного ответа, а затем просто добавьте свои команды JS в конец.
класс CustomController расширяет ActionLinkController {
флаг публичной функции (FlagInterface $flag, $entity_id) {
$response = parent::flag($flag, $entity_id);
$ответ->добавитькоманду(...);
вернуть $ответ;
}
// То же самое для unflag()
}
Для полного покрытия вам также может понадобиться сделать что-то похожее на flag.action_link_flag_nojs и flag.action_link_unflag_nojs маршруты. Но если ваш функционал чисто JS и не должен присутствовать для пользователей без него, возможно, не стоит заморачиваться.