Drupal8 убирает теги типа select. Как этого избежать?

Главные вкладки

Аватар пользователя pingvin156 pingvin156 29 мая 2018 в 21:54

При выводе блока формирую его HTML программно. Среди прочего есть следующий код:

<select>
          <option value="3">3</option>
          <option value="4">4</option>
          <option value="5">5</option>
          <option value="6">6</option>
          <option value="7">7</option>
          <option value="8">8</option>
          <option value="9">9</option>
          <option value="10">10</option>
          <option value="11">11</option>
          <option value="12">12</option>
          <option value="13">13</option>
          <option value="14">14</option>
          <option value="15">15</option>
          <option value="16">16</option>
          <option value="17">17</option>
          <option value="18">18</option>
          <option value="19">19</option>
          <option value="20">20</option>
          <option value="21">21</option>
          <option value="22">22</option>
          <option value="23">23</option>
          <option value="24">24</option>
        </select>

Вместо списка выводит через пробел эти цифры. Я где-то косякнул или он намеренно убирает эти теги?

Лучший ответ

Аватар пользователя OldWarrior OldWarrior 30 мая 2018 в 0:15

Кто знает, может у него какой-то внешний получатель формы.

PS. Есть подозрение, что стрипятся теги при выводе блока, поскольку '#markup' в Form API D8 не поддерживает HTML-разметку.

Т.е. если, скажем:

<?php
$build 
= array(
 
'#markup' => '<select> ... </select>',
);
return 
$build;
?>

То тогда как-то так:

<?php
$build 
= array(
 
'#markup' => \Drupal\Core\Render\Markup:create('<select> ... </select>'),
);
return 
$build;
?>

Комментарии

Аватар пользователя OldWarrior OldWarrior 30 мая 2018 в 0:15

Кто знает, может у него какой-то внешний получатель формы.

PS. Есть подозрение, что стрипятся теги при выводе блока, поскольку '#markup' в Form API D8 не поддерживает HTML-разметку.

Т.е. если, скажем:

<?php
$build 
= array(
 
'#markup' => '<select> ... </select>',
);
return 
$build;
?>

То тогда как-то так:

<?php
$build 
= array(
 
'#markup' => \Drupal\Core\Render\Markup:create('<select> ... </select>'),
);
return 
$build;
?>