drupal 8

Как запустить функциональный тест в D8 в Docker

Написанное актуально для Drupal 8.6.10-dev

Для других версий Drupal набор и версии зависимостей может меняться. Это связано с тем, что при написании тестов для D8 наследуются классы phpunit. В различных версиях этой библиотеки набор методов и их параметры могут отличаться. В результате при попытке запуска теста будут появляться ошибки, свидетельствующие о несовместимости версии D8 и библиотек, необходимых для запуска тестов.

Устанавливаем зависимости:

Вызов собственной JavaScript функции в форме Drupal 8

Если вам необходимо вызвать собственную JavaScript функцию по результатам обработки AJAX запроса, необходимо сделать следующее:

В класс вашей формы, в нужное поле прописываем вызов callback функции.

Добавление класса к таблице Drupal 8

В Drupal 8 для добавления класса к таблице в массив таблицы необходимо добавить параметр #attributes, а уже внутри него располагается массив class.

$output['#my_table'] = array(

  '#type'=>'table',

  '#rows'=>$tdata,

  '#attributes'=>array(

    'class'=>'dog-ustr'

  )

);

 

Отключение кэширования страницы Drupal 8

Для отключения кэширования отдельно взятой страницы в Drupal 8 необходимо добавить в функцию контроллера данной страницы следующую строку:

$output['#cache']['max-age'] = 0;

В итоге получаем такой код:

public function myControllerFunction(){
  $output = array();

  ...................

  $output['#theme'] = 'my_page_theme';
  $output['#cache']['max-age'] = 0;
  return $output;
}

 

Select в Drupal 8

В Drupal 8 функции db_query и db_select вошли в перечень устаревших (deprecated) функций.

Вот пример правильного простейшего select-запроса к БД в Drupal 8.

use Drupal\Core\Database\Database;

$query = Database::getConnection()->select('node_field_data', 'n')
  ->fields('n', array('nid', 'title'))
  ->orderBy('nid');
$rows = $query->execute();
      
foreach($rows AS $row){
  $data[] = $row->title;
}