Drupal 8: пользовательская сборка iFrame в пользовательском блоке не отображается - PullRequest
0 голосов
/ 04 апреля 2019

В D8 я программно создал блок и создал iFrame на основе значения базы данных. Код ниже для блока:

class GooglemapBlock extends BlockBase {

  /**
   * {@inheritdoc}
   */
  public function build() {
    $build = [];
    //$build['googlemap_block']['#markup'] = 'Implement GooglemapBlock.';
    $config = \Drupal::config('custom.default');
    $build['googlemap_block']['#markup'] = drupal_set_message($config->get('google_token'));
    $rawTxt = $build['googlemap_block']['#markup']['status'][0];
    $build['googlemap_block']['#markup'] = '<iframe src="'.$rawTxt.'" width="100%" height="100%" frameborder="0"allowfullscreen></iframe>';

    return $build;
  }

}

Затем я назначил блок в область footer_first из панели администратора.

Теперь, в page.html.twig, я использовал то же самое, что и {{ page.footer_first }}, однако, я вижу, это показывает пробел. IFrame не отображается.

Значение сохраненной базы данных, которое я хочу передать в iFrame, ниже:

https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d9207.358598888495!2d-85.64847801496286!3d30.183918972289003!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0000000000000000%3A0x2320479d70eb6202!2sDillard!5e0!3m2!1sbn!2sbd!4v1462359735720

1 Ответ

0 голосов
/ 04 апреля 2019

На основании ответа от https://drupal.stackexchange.com/questions/246151/iframe-not-displayed-in-drupal-8-controller-page, я сделал следующее в своем пользовательском блоке, и теперь он работает нормально:

class GooglemapBlock extends BlockBase {

  /**
   * {@inheritdoc}
   */
  public function build() {
    $build = [];
    //$build['googlemap_block']['#markup'] = 'Implement GooglemapBlock.';
    $config = \Drupal::config('custom.default');
    $build['googlemap_block']['#markup'] = drupal_set_message($config->get('google_token'));
    $rawTxt = $build['googlemap_block']['#markup']['status'][0];

    $iframe = [];
    $iframe = array(
      '#type' => 'inline_template',
      '#template' => '<iframe width="100%" height="100%" src="'.$rawTxt.'" 
       frameborder="0" allowfullscreen></iframe>',
      //'#context' => ['url' => 'https://www.youtube.com/embed/yAoLSRbwxL8',],
    );

    return $iframe;
  }

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