workRave
@workRave

Правильно ли я сделал простое меню на php?

Добрый день, Великие Джедаи!
Я сделал сайт: karlson-tour.ru
У меня стояла задача сделать меню для сайта, которое можно будет дорабатывать и править в одном месте.

1. Добавил в начало строчку:
<?php require_once('assets/php/costom.php') ?><!DOCTYPE html>

В costom.php следующий код:
<?php
function getMenu($arr)
{
  $index = '';
  $parnership = '';
  
  if($arr == index){$index='class="active"';}
  if($arr == partnership){$parnership='class="active"';}
  
  return '
    <div class="menu-container">
      <ul class="nav navbar-nav">
        <li '.$index.'>
          <a href="index.php" class="dropdown-toggle">
            Экскурсия по крышам
          </a>
        </li>
        <li '.$parnership.'>
          <a href="partnership.php" class="dropdown-toggle">
            Сотрудничество
          </a>
        </li>
        <li>
          <a href="tel:+78122411466" class="dropdown-toggle"><i class="menu-icons-style radius-x fa fa-phone"></i> +7 (812) 241-14-66</a>
        </li>
        <li>
            <a href="http://vk.com/karlsontour" target="_blank"><i class="menu-icons-style radius-x fa fa-vk"></i></a>
        </li>
      </ul>
    </div>
  ';
}
?>


Вставка кода:
<?= getMenu(); ?>
<?= getMenu(index); ?>

Правильно ли я сделал?

upd1: Обновил с учетом рекомендаций @Heian
upd2: Обновил с учетом рекомендаций Антон
  • Вопрос задан
  • 787 просмотров
Пригласить эксперта
Ответы на вопрос 3
<?php require_once('assets/php/costom.php') ?>
<!DOCTYPE html>

Уже невалидно. Перед <!doctype> не должно быть ничего, в том числе, пробелов, переносов строк и т.п. Запишите в одну строчку.
<?php require_once('assets/php/costom.php') ?><!DOCTYPE html>


Плюс переменные $index и $partnership во многих случаях у вас будут не инициализированы - стоит объявить их в начале функции с пустой строкой. Если включить вывод ошибок, столько нотисов повылезает, поди...
Ответ написан
@karminski
Senior React.JS Developer
Возьмите за правило, что любая функция должна возвращать результат. А вывод должен делаться уже во вьюхе (ну т.е. в HTML). Рекомендую в функции getMenu заменить echo на return. А в HTML делать вывод так:
<?= getMenu(); ?>
<?= getMenu(index); ?>
или так
<?php echo getMenu(); ?>
<?php echo getMenu(index); ?>


А вообще пора бы уже присмотреться к фреймворкам.
Ответ написан
@ssrdop
для большой красоты и ясности используйте альтернативный синтаксис php. А так все верно.
Ответ написан
Ваш ответ на вопрос

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

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