Drupal 8 назначает шаблон модуля странице - PullRequest
0 голосов
/ 06 марта 2019

Я новичок в drupal и создаю модуль, позволяющий клиентам настраивать карты с использованием Fabric JS. Я создал модуль и внутри него я создал файл шаблона внутри my_module> templates> page - my_module.html.twig. Проблема в том, что я не могу просмотреть содержимое шаблона на странице.

Вот код моего файла my_module.module

    <?php

use Drupal\Core\Routing\RouteMatchInterface;

/**
 * Implements hook_help().
 */
function my_module_help($route_name, RouteMatchInterface $route_match) {
  switch ($route_name) {
    case 'help.page.my_module':
      return t('
        <h2>Lorem ipsum generator for Drupal.</h2>
        <h3>Instructions</h3>
        <p>Lorem ipsum dolor sit amet... <strong>Just kidding!</strong></p>
        <p>Unpack in the <em>modules</em> folder (currently in the root of your Drupal 8 installation) and enable in <strong>/admin/modules</strong>.</p>
        <p>Then, visit <strong>/admin/config/development/loremipsum</strong> and enter your own set of phrases to build random-generated text (or go with the default Lorem ipsum).</p>
        <p>Last, visit <strong>www.example.com/loremipsum/generate/P/S</strong> where:</p>
        <ul>
          <li><em>P</em> is the number of <em>paragraphs</em></li>
          <li><em>S</em> is the maximum number of <em>sentences</em></li>
        </ul>
        <p>There is also a generator block in which you can choose how many paragraphs and
phrases and it\'ll do the rest.</p>
        <p>If you need, there\'s also a specific <em>generate lorem ipsum</em> permission.</p>
        <h3>Attention</h3>
        <p>Most bugs have been ironed out, holes covered, features added. But this module is a work in progress. Please report bugs and suggestions, ok?</p>
      ');
  }
}

/**
* Implements hook_theme() to add the template definition.
**/
function my_module_theme($existing, $type, $theme, $path) {
  return array(
    'my_module_template' => array(
        'template' => 'page--my_module',
      'variables' => array('test_var' => NULL),
    ),
  );
}

Вот код контроллера MyModuleController.php

    <?php
/**
 * @file
 * Contains \Drupal\card_designer\Controller\FirstController.
 */

namespace Drupal\my_module\Controller;

use Drupal\Core\Controller\ControllerBase;

class MyModuleController extends ControllerBase {
  public function content() {
    return array(
      '#theme' => 'card_designer_template',
      '#test_var' => $this->t('Test Value'),
    );
  }
}

Вот код my_module.routing.yml

  my_module.content:
  path: '/card-design'
  defaults:
    _controller: 'Drupal\my_module\Controller\MyModuleController::content'
    _title: 'Hello world'
  requirements:
    _permission: 'access content'**strong text**

А вот и страница - файл my_module.html.twig

<p> This is the lotus template with a value of {{ test_var }} </p>

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

Может кто-нибудь сказать мне, где я не прав и как я могу увидеть вывод на странице.

Заранее спасибо.

1 Ответ

0 голосов
/ 08 марта 2019
  1. В "my_module.routing.yml" исправьте _permission: 'access content'**strong text** в _permission: 'access content'. Я не уверен, где вы взяли **strong text**, но это не должно быть здесь.

  2. Переименуйте "страницу - my_module.html.twig" в "страницу - my-module.html.twig". Имена шаблонов веточек не должны иметь подчеркивания.

  3. В «MyModuleController.php» измените '#theme' => 'card_designer_template', на '#theme' => 'page__my_module',, потому что имя машины шаблона должно совпадать со всеми другими именами тем. Обратите внимание, что page__my_module использует подчеркивание при использовании в PHP, но при использовании в качестве имени файла шаблона ветки подчеркивания преобразуются в дефисы => page--my-module.html.twig.

  4. В "my_module.module" изменить

'my_module_template' => array(
        'template' => 'page--my_module',
      'variables' => array('test_var' => NULL),
    ),

до

'page__my_module' => array(
  'variables' => array('test_var' => NULL),
),

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

  1. Я не уверен, что у вас есть «my_module.info.yml», но должно быть что-то вроде:
name: my_module
type: module
description: 'My custom module'
package: 'Custom'
core: 8.x
  1. Я не уверен в вашей структуре, но это должно быть так:

enter image description here

Надеюсь, я ничего не пропустил :) Я исправил и протестировал ваш код, поэтому, если он не работает, дайте мне знать, и я исправлю свой ответ.

...