@HitGirl

Как убрать php-врезки из html?

Здравствуйте!
Подскажите, пожалуйста, можно ли убрать из html-файлов (index.php) php-врезки, аналогичные данной:
<?php
                if (isset($login)){
                    echo "<div class='col-xs-6' id='login_text'>
                        <p class='login_text'>Здравствуйте, ".$login."!</p>
                        </div>";
                }
                else{
                    echo "<div class='col-xs-6' id='login_text'>
                        <form action='' method='post' class='login' id='login'>
                        <label>Логин</label><input type='text' name='login' value='".((isset($_COOKIE['gyppi_login']))?$_COOKIE['gyppi_login']:'')."' required>
                        <label>Пароль</label><input type='password' name='password' value='".((isset($_COOKIE['gyppi_password']))?$_COOKIE['gyppi_password']:'')."' required>
                        <input name='button' type='submit' value='Войти'>
                        </form>
                        <button onclick='window.location=\"registration.php\"' class='registration' id='regbutton'>Регистрация</button>".((isset($error_message))?'<div><p class="error_message">'.$error_message.'</p></div>':'')."</div>";
                }
?>

или комбинировать html с php это нормально и так и надо делать?
  • Вопрос задан
  • 124 просмотра
Пригласить эксперта
Ответы на вопрос 4
@maksim_fix
Junior PHP developer
Банальный пример:
<html>
<body>
<?=$title?>
Some text
<a href="<?=$link?>">link</a>
</body>
</html>

Как-то так, также есть конструкции if: endif;, которые помогут в вашем случае, а выводить через echo все подряд - бред
Ответ написан
Delgus
@Delgus
В простом случае, когда используется mvc во views создается что то типа этого

<?php if (isset($login)): ?>
    <div class='col-xs-6' id='login_text'>
        <p class='login_text'>Здравствуйте, <?= $login ?>!</p>
    </div>
<?php else: ?>
    <div class='col-xs-6' id='login_text'>
        <form action='' method='post' class='login' id='login'>
            <label>Логин</label>
            <input type='text' name='login'
                   value='<?= $_COOKIE[' gyppi_login'] ?? $_COOKIE['gyppi_login'] ?>' required>
            <label>Пароль</label>
            <input type='password' name='password'
                   value='<?= $_COOKIE[' gyppi_password'] ?? $_COOKIE['gyppi_password']?>'
                   required>
            <input name='button' type='submit' value='Войти'>
        </form>
        <button onclick='window.location="registration.php"' class='registration' id='regbutton'>Регистрация</button>
        <?php if (isset($error_message)): ?>'
            <div>
                <p class="error_message"><?=$error_message?></p>
            </div>
        <?php endif; ?>
    </div>
<?php endif; ?>



onclick='window.location="registration.php"'

Такие вещи надо тоже в js код выносить.

Также можно использованить щаблонизаторы - Twig, Smarty
Ответ написан
Комментировать
php666
@php666
PHP-макака
или комбинировать html с php это нормально и так и надо делать?
если ты посмотришь на "скомпилированный" шаблона код ЛЮБОГО php-шаблонизатора, будь то smarty или что-то поновее, то увидишь, что в итоге получается html-шаблон со вставками php. Это абсолютно нормально.

Ну и на статью на эту тему.
Ответ написан
Комментировать
ArsenyMatytsyn
@ArsenyMatytsyn
Руководитель frontend направления, предприниматель
1. Выводить портянки через echo себе дороже.
2. Шаблонизаторы типа blade, twig предотвращают (отчасти) от логики во вьюхах (это важно, не размазывать логику по всему проекту).
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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