den0820
@den0820
Фронтенд Junior разработчик.

Почему переменная остается пустой, после присвоения ей значения в операторе switch?

При нажатии на ссылку(вкладку) Сплэш - заставка, подгружается нужная страница но переменная $layoutModificator видимо по прежнему остается пустой, хотя в операторе switch, если $page = animation, то в первую очередь $layoutModificator присваиваю значение = "splash". Но в классе в тэга боди ничего нет, хотя там я вывожу переменную $layoutModificator. Помогите разобраться!

<?php
    $page = (isset($_GET['page'])) ? $_GET['page'] : 'index.php';

    $layoutModificator = '';
?>

<!DOCTYPE html>

<html>
 	<head>
  		<meta charset="utf-8">
  		<title>Главная страница</title>

        <link rel="stylesheet" type="text/css" href="style.css">
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
        <script type="text/javascript" src="libs/slider.js"></script>
        <script type="text/javascript" src="site.js"></script>
 	</head>

 	<body class="<?php echo $layoutModificator;?>">
        <div class="wrap">
            <div class="inner"></div>
            <div class="page">
                <div class="header">
                    
                </div>

                <div class="content">
                    <div class="inner">
                        <h2>Java Script Pro</h2> 

                        <?php
                            echo $splash. ' '.$layoutModificator;
                        ?>

                        <nav class="menu">
                            <a href="?page=slider">Слайдер на jQuery</a>
                            <a href="?page=animation">Splash - заставка</a>
                        </nav>

                        <?php
                            switch ($page) {
                                case 'slider':
                                    include "page/slider.php";
                                break;

                                case 'animation':
                                    $layoutModificator = "splash";
                                    include "page/animation.php";
                                break;
                            }
                        ?>

                    </div>
                </div>
            </div>

            <div class="footer">
                
            </div>
        </div>
 	</body>
</html>
  • Вопрос задан
  • 226 просмотров
Решения вопроса 1
copist
@copist
Empower people to give
Два замечания
<?php
$page = (isset($_GET['page'])) ? $_GET['page'] : 'index.php';

$layoutModificator = '';

// комментарий: определять значение $layoutModificator нужно до того, как она "эхается" в <body>
switch ($page) {
	case 'slider':
		$includeFile = "page/slider.php";
		break;
	case 'animation':
		$layoutModificator = "splash";
		$includeFile = "page/animation.php";
		break;
}
// комментарий: вот тут ниже пустая строка - потенциальная проблема, особенно при выдаче заголовков header(...);
?>
<!-- .... -->
<body class="<?php echo $layoutModificator;?>">
         <!-- .... -->
				<?php include($includeFile); // вместо switch ?>


Полный текст решения codepad.org/7dYnHaxp
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
А ничего, что присвоение ниже вывода?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
02 мая 2024, в 23:56
2000 руб./за проект
02 мая 2024, в 23:29
1500 руб./в час
02 мая 2024, в 23:16
7500 руб./за проект