Как показать условные данные в представлениях в рамках MVC? - PullRequest
1 голос
/ 17 сентября 2009

Как люди обычно обрабатывают условные операторы в средах MVC

Для некоторых из моих страниц (созданных под Kohana) я хочу, чтобы у пользователя было больше опций в зависимости от того, вошли они в систему или нет, и, например, является ли профиль их собственным профилем. Исходя из собственного опыта, вы создаете отдельные представления, пустые переменные, используете ли логику в представлении или как?

Спасибо

Зенна

Ответы [ 2 ]

2 голосов
/ 17 сентября 2009

Лично для меня я передам информацию представлению, чтобы определить, какие части представления следует отображать, поскольку я считаю, что показ / скрытие элементов отображения является частью логики представления.

В случае с Kohana, если вы передадите переменную $ user представлению, которое является объектом User_Model, даже если человек не загружен, объект все равно будет существовать, поэтому вы можете написать код в своем представлении, например как:

<?php if ($user->logged_in()):?>
<div>Some login only markup here</div>
<?php else:?>
<div>some not login only markup here</div>
<?php endif;?>

Ваш пробег также может варьироваться в зависимости от того, используете ли вы ORM или другую ORM-подобную библиотеку вместо написания моделей на пустом месте.

2 голосов
/ 17 сентября 2009

Это зависит от того, как будет выглядеть представление в зависимости от значений переменной. Например, если вам нужно просто скрыть / показать пару элементов управления, я бы включил в представление элементы управления, которые в некоторых случаях были бы пустыми, а в других содержали бы данные.

Если одновременно отображается / скрывается более двух элементов управления, и ваша структура поддерживает концепцию «панелей» (повторно используемых частей представления), я бы разделил эту группу элементов управления на панель и отобразил бы / скрыл эта панель в зависимости от условного.

Компромисс здесь заключается в «чистоте» (у вас есть смешанные компоненты представления для двух представлений в одном?) По сравнению с «простотой обновления» (если оба представления развиваются одновременно, вы обновляете два места или только одно?)

...