@kedavra
code berserker

Красивый вывод данных во View?

Из контроллера во вью передается объект User с самыми разными полями, в их числе контакты - email, twitter, vk, fb etc.
Сейчас это выглядит так:
<?php if (property_exists($user, 'icq')) :  ?>
<p class='contact'><?='ICQ: '.$user->icq; ?></p> //или лучше <p>ICQ: <?=$user->icq; ?></p> ?
<?php endif; ?>

Одинаковые дебри для каждого поля, а их многовато, выходит громоздко.
Можно было бы создать метод $user->print(), он бы и для другой страницы пригодился, но а.) как будто лишняя логика во view, хотя и связанная только с представлением б.) класс-сущность занимается не своим делом в.) внутри метода может оказаться echo '<p>..' или <br> как минимум, что плохо. Я зря мудрю? А может есть решение получше?
фреймворк не использую
  • Вопрос задан
  • 338 просмотров
Решения вопроса 1
sanchezzzhak
@sanchezzzhak
Ля ля ля...
Лучше создать цикл с нужными проверками что выводить, если вывод одинаков для всех полей.
Что то в таком духе...
<?php $arrAttr = ['icq' => 'Label ICQ' , 'email' => 'Ваш email' ]; ?>
<?php foreach($arrAttr as $key=> $attr):?>
     <?php if (property_exists($user, $key)) :  ?>
           <p class='attr'><?= $attr?></p><p><?=$user->{$key}; ?></p>
      <?php endif; ?>
<?php endforeach;?>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
sivabur
@sivabur
Заблокировали просто так!
лучше ICQ: <?=$user->icq; ?>
Ответ написан
Комментировать
L1Qu0R
@L1Qu0R
Веб разработчик
Ну этот подход вполне нормальный, к примеру в yii во view используется та же логика.
Но если так не нравится, то использовать только какой-нибудь шаблонизатор :)
Ответ написан
miraage
@miraage
Старый прогер
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы