alex_shevch
@alex_shevch
Frontend Developer

Какие есть best practices при смешивании вёрстки с php?

Всем привет!
Есть ли какие-то best practices, когда, скажем так, в вёрстке в качестве "шаблонизатора" используется php?
Стараюсь причесать исходный код страницы, с отступами повсюду беспорядок.

Понял, что отступы для вёрстки внутри php конструкций использовать не стоит, так как сервер отдаёт страницу, где все php-вставки "исчезают", а отступы остаются.

То есть писать нужно не так:
<div class="c-tab__nav" role="tablist" aria-label="<?php echo lang('tabsLabel'); ?>">
    <?php foreach ($data['thisUserFields'] as $key => $value): ?>
        <?php if ($value['type'] === 'textarea' && !empty($value['value'])): ?>
            <button class="js-open-tab c-tab__link"
                    role="tab"
                    id="c-tab-btn-<?php echo $key ?>"
                    aria-selected="false"
                    tabindex="0"
                    aria-controls="c-tab__tab<?php echo $key ?>">
                <?php echo $value['name'] ?>
            </button>
        <?php endif; ?>
    <?php endforeach; ?>
</div>

а так:
<div class="c-tab__nav" role="tablist" aria-label="<?php echo lang('tabsLabel'); ?>">
    <?php foreach ($data['thisUserFields'] as $key => $value): ?>
        <?php if ($value['type'] === 'textarea' && !empty($value['value'])): ?>
    <button class="js-open-tab c-tab__link"
            role="tab"
            id="c-tab-btn-<?php echo $key ?>"
            aria-selected="false"
            tabindex="0"
            aria-controls="c-tab__tab<?php echo $key ?>">
        <?php echo $value['name'] ?>
    </button>
        <?php endif; ?>
    <?php endforeach; ?>
</div>


Это визуально портит структуру, особенно когда при большой вложенности php начинает уезжать вправо, а вёрстку всё равно приходится прижимать к левому краю.

А как вы это делаете?
Давайте только без "в моей вёрстке нет php" и "в моём php нет вёрстки", "Используйте шаблонизатор" и так далее.
Есть конкретный кейс, как лучше поступать в такой ситуации?
  • Вопрос задан
  • 400 просмотров
Решения вопроса 3
glaphire
@glaphire Куратор тега PHP
PHP developer
Браузер рендерит страницу на основе сгенеренного сервером html, отступы в шаблоне для него не имеют значения. Отступы при смешении php и html нужно делать во благо читаемости.
На заметку - в шаблоне надо использовать альтернативный синтаксис управляющих структур. И <?php echo заменять на <?= .
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Оооо, я в свое время заморачивался этим вопросом страшно, чтобы отрендереный хтмл выглядел аккуратно.
И даже придумал вариант всегда начинать теги РНР в начале строки, а отступы похапешные делать внутри этой строки.

<div blabla>
<?php foreahch(): ?>
    <div blah>
<?php    if(): ?>
        <table>
<?php        foreach(): ?>
            <tr>

Получилось в теории ровно но на практике еще более уродливо.
А потом стал пользоваться шаблонизаторами и забыл про все эти куличики в песчнице
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
А что мешает перед отдачей (уже готовой страницы в сокет), выравнивать все отступы в html-коде через php tidy?
Отлично работает и не нужно ничего изобретать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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