Вы здесь

Drupal 8: Как получить ноду из ссылки в ajax-запросе? (и не только)

Возникла такая проблема, когда убирал некоторые элементы на форме фильтрации для views. Форма работает через ajax и при загрузке страницы можно получить объект ноды из пути:

/** @var \Drupal\node\Entity\Node $node */
$node = \Drupal::routeMatch()->getParameter('node');

А если идёт фильтрация, то объект ноды текущего роута не получить. Поэтому будем его брать $_SERVER['HTTP_REFERER']:

if(\Drupal::request()->isXmlHttpRequest()){
  $referer = \Drupal::request()->server->get('HTTP_REFERER');
  $parse = parse_url($referer);
 
  /** @var \Drupal\Core\Url $url_object */
  $url_object = \Drupal::service('path.validator') ->getUrlIfValid($parse['path']);
  $params = $url_object->getRouteParameters();
  if(isset($params['node'])){
    $node = \Drupal::entityTypeManager()->getStorage('node')->load($params['node']);
  }
}

 

Тэги: 
Поделиться:

Оставить комментарий