Динамически генерировать страницу Drupal для каждой строки в таблице - PullRequest
0 голосов
/ 09 июля 2019

Есть ли способ в Drupal 8 динамически генерировать страницу для каждой строки в таблице в базе данных?

Если у меня есть база данных с именем School, с таблицей Students, с этими столбцами и строками:

ID |FirstName   |LastName   |Email                  |User       |HiddenField
-------------------------------------------------------------------------
 1  |Adam       |Johnson    |ajohnson@example.com   |ajohn1     |Blah
 2  |Bob        |Smith      |bsmith@example.com     |bsmith0    |Foo

Существует ли модуль или настройка для создания простых страниц с такими URL-адресами с таким содержанием:

http://mywebpage.com/students/1

First name: Adam
Last name: Johnson
Email address: ajohnson@example.com
Username: ajohn1

http://mywebpage.com/students/2

First name: Bob
Last name: Smith
Email address: bsmith@example.com
Username: bsmith0

Обратите внимание, что есть HiddenField, который не отображается, поэтому это решение должно включать возможность исключать определенные столбцы.

Я пытался использовать модуль Views для создания новой страницытипа, но я не вижу там, где указать таблицу или что-то в этом роде.

1 Ответ

0 голосов
/ 10 июля 2019

Чтобы извлечь данные в ассоциативный массив с ключами, названными полями, вы можете написать следующее:

$query = \Drupal::database()->select('students')
  ->fields('students', [
    'id',
    'firstname',
    'lastname',
    'email',
    'user'
  ]);
$results = $query->execute()->fetchAllAssoc();

После этого вы можете перебирать $results и создавать страницы:

foreach ($results as $result) {
  // Create node object.
  $node = Node::create([
    'type' => 'page',
    'title' => 'whatever you want',
    'field_machine_name' => 'field_value',
    'firstname' => $result['firstname'],
  ]);
  $node->save();
}

Имейте в виду, что использование инъекций зависимостей везде, где вы можете. Также вы можете проверить наличие ошибок, например, есть ли пакет под названием «page», и запускать его, только если он есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...