контроллер - значит что то контролирует и все, в нем не должно быть никакой бизнес логики (т.е. того понимания как формируется html и пр.) контроллер отвечает за то чтобы, отправленный запрос от пользователя попал в нужную модель.
Вы правильно говорите, что запрос в бд должен идти из модели.
следовательно формирование HTML должно быть в виде (view), и если содержимое сильно различается, создайте новый view - файл, который будет отображать что то другое.
Вот так правильней:
Из модели я обращаюсь к БД и получаю нужно значение, потом из контроллера передаю во вью и там уже делаю обработку и формирование HTML. Так ли это делается?