Должен ли я выделять текст жирным шрифтом в представлении, контроллере или модели? (Codeigniter, не специфично для него)

#php #model-view-controller #codeigniter

#php #модель-представление-контроллер #codeigniter

Вопрос:

Давайте обратимся к разделу «Сортировать по» в Yelp:

У меня есть 3 функции anchor (), которые генерируют 3 ссылки. Когда выбрана одна из опций ‘сортировать по’, я хочу удалить гиперссылку / привязку () и выделить ее жирным шрифтом, чтобы показать, что она выбрана точно так же, как на странице выше.

Прямо сейчас я подумываю о том, чтобы выполнить uri_to_assoc() в $ arr, потому что выбранная опция будет в URL типа controller / function /sort_by /best_reviews / .. , затем, основываясь на том, что является ключом (best_reviews) или элементом (sort_by), используйте следующий код в представлении

 <?php
$arr = uri_to_assoc(3);

if($arr['sort_by'] == 'best_reviews') {
    echo "<strong>Best Reviews</strong>";
} else {
    anchor('controller/function/sort_by/best_reviews', 'Best Reviews');
]
?>
  

Теперь я считаю, что идея MVC заключается в том, чтобы сохранить немного php-кода (логического кода?) в представлении. В этом случае вы поместите приведенный выше код в представление, или эта логика в контроллере / модели затем передаст окончательный код для отображения (либо echo, либо anchor ()) в массив и просто отобразите массив в представлении?
.

.

Мини-вопрос (PHP)

Если $arr[‘sort_by’] не определен в случае, если /sort_by / переменная не существует в URL, оператор if($arr[‘sort_by’] == ‘best_reviews’) выдаст ошибку. Вложите ли вы весь приведенный выше код в if(isset($arr[‘sort_by’])){} ?

Комментарии:

1. Что касается мини-вопроса — я бы, вероятно, принудил $arr['sort_by'] к существованию (установив для него некоторое значение по умолчанию) перед передачей $arr в представление.

2. $arr[‘sort_by’] извлекается из URL, если …./sort_by/переменная ….. существует где-то в url. Это похоже на использование строк запроса?sort_by= переменная, но в случае Codeigniter это в форме / sort_by / переменная в URL. является ли использование isset () плохим способом кодирования?

3. Нет, использование isset() неплохо. Но разве вам не нужен какой-либо порядок по умолчанию, если он не указан?

4. порядок по умолчанию не требуется. url преобразуется в ключ элемента и значение в парах /key1 /value1 /key2 /value2

Ответ №1:

Вы изменяете представление, поэтому вы должны сделать это в представлении. Это не имеет никакого отношения к какой-либо бизнес-логике вообще. Вы можете использовать код в представлении, но с единственной целью представления; нет ограничений на объем кода, только по назначению.