@andrew-corput

Как вставить фрагмент html в нужное место html кода посредством php?

Код работает, но не правильно. Кнопка создаваемая '.Menu().' появляется не там где нужно, а сразу же после body
53a9b94e05194bfdbe8323c0a72de18d.png
function Menu() {
    if ($_SESSION['USER_LOGIN_IN'] != 1) {
        echo '
        <div class="login">
            <a href="/login">Войти</a>
        </div>
        ';
    }
    else {
        echo '
        <div class="login">
            <a href="account/logout/">Выйти</a>
        </div>
        ';
    }
}

function Head($p1) {
	echo '
	<!DOCTYPE html>
	<html class="no-js" lang="">
	    <head>
	        <meta charset="utf-8">
	        <meta http-equiv="x-ua-compatible" content="ie=edge">
	        <title>'.$p1.'</title>
	        <meta name="description" content="">
	        <meta name="viewport" content="width=device-width, initial-scale=1">

	        <link rel="apple-touch-icon" href="apple-touch-icon.png">

	        <link rel="stylesheet" href="assets/normalize.css">
	        <link rel="stylesheet" href="assets/main.css">
	        <link rel="stylesheet" href="css/style.css">
	    </head>
	    <body>

	    	<header id="header">
				<div id="wrapper">
					<div class="logo">
						<a href="/">
							<h3>Logo</h3>
						</a>
					</div>
					'.Menu().'
					<div class="cart">
						<a href="/">Корзина</a>
					</div>
				</div>
			</header>
	';
}
  • Вопрос задан
  • 874 просмотра
Решения вопроса 1
@none7
Потому, что echo внутри Menu() вызывается раньше echo внутри Head. Логично же, что до завершения конкатенции, echo в Head отработать не может. Так же Menu() не возвращает строку, а только выводит её через echo, поэтому внутрь html-кода вставляется пустая строка. Простейший вариант в том, чтобы просто убрать конкатенцию. '.Menu().' => ',Menu(),' . Так вызовы echo будут в нужном порядке. Также можно в Menu(), echo заменить на return.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
hol
@hol
¯\_(ツ)_/¯
Можно код функции меню?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Ведисофт Екатеринбург
от 25 000 ₽
YCLIENTS Москва
от 200 000 до 350 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
04 мая 2024, в 17:58
10000 руб./за проект
04 мая 2024, в 17:40
1000 руб./за проект
04 мая 2024, в 17:35
150000 руб./за проект