Задать вопрос
kryamk
@kryamk

Почему некорректно форматируются PHP с HTML, когда открывающие/закрывающие теги в условиях?

Хочется чтобы было такие отступы:
<?php if (true): ?>
    <div class="hidden">
<?php endif; ?>

    <?php echo 'content'; ?>

<?php if (true): ?>
    </div>
<?php endif; ?>


Вариант phpshtorm:
<?php if (true): ?>
<div class="hidden">
    <?php endif; ?>

    <?php echo 'content'; ?>

    <?php if (true): ?>
</div>
<?php endif; ?>


Вариант vscode:
<?php if (true): ?>
    <div class="hidden">
    <?php endif; ?>

    <?php echo 'content'; ?>

    <?php if (true): ?>
    </div>
<?php endif; ?>


При использовании скобок вместо endif - тоже самое.
  • Вопрос задан
  • 495 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
если хочется без шаблонизаторов, то пишите так:
<?php 
ob_start();
echo 'content';
$content = ob_get_clean();

if (true) {
    ?><div class="hidden"><?=$content?></div><?php
} else {
    echo $content;
}

и будет Вам счастье. Разрывы во вложенности никто не любит - ни PHP контекст, ни HTML контекст.

P.S. вспоминаю времена XSLT - боже, как это было офигенно!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Everything_is_bad
Хочется что люди наконец осилили шаблонизаторы
Ответ написан
delphinpro
@delphinpro Куратор тега PHP
frontend developer
напишите так

<?php $conditional = true; ?>
<div class="<?= $conditional ? 'hidden' : 'display-contents' ?>">

    <?php echo 'content'; ?>

</div>


.display-contents {
  display: contents; 
}


или так (блок небольшой)

<?php if (true): ?>
    <div class="hidden">
      <?php echo 'content'; ?>
    </div>
<?php else: ?>
    <?php echo 'content'; ?>
<?php endif; ?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы