какой элемент MVC представляет собой справочники?

Духовность™

Продвинутый новичок
какой элемент MVC представляет собой справочники?

Как-то однажды мне нужно было создать для анкеты пользователя дополнительные свойства - телефоны. Я не помню за давностью почему, но типы телефонов я решил хранить в "справочнике" - в отдельной таблице, в базе.

Код:
id   type_name

1    Home
2    Work
3    Mobile
4    Fax
5    Other
Для шаблона все эти типы телефонов я получаю в массив
PHP:
Database::getInstance()->query('SELECT * FROM phone_type ORDER BY id ASC');
и вывожу примерно так:
PHP:
<? foreach ($phones_types as $id => $type): ?>
    <?=$type?><br>
    Номер телефона: <input name="user[phones][<?=$id?>][number]"  type="text">
    Время для звонка: <input name="user[phones][<?=$id?>][time_call]" type="text">
<? endforeach; ?>
В чем суть моего вопроса: какой слой в системе MVC должен заниматься получением списка типов телефонов из базы?

Создавать под эту задачу свой меппер - лень. Ведь нужен всего 1 SQL запрос!

Засунуть получение списка типов в слой View? Создать отдельную функцию в контроллере? А может не нужен для этого справочник и поля создавать вручную?

Не знаю.
 

fixxxer

К.О.
Партнер клуба
уровень компонента User который дергает модель PhoneTypes

(чистый mvc говно)

-~{}~ 27.02.10 21:18:

хотя как посмотреть, это еще может быть и на уровне локализации в виде карты соответствий (я такие штуки довольно тупо называю LocLists, и они представляют собой массивы вида вот такого вот как у тебя табличка phone_type для разных языков; можно и в базе держать) - это уже view уровень
 

Духовность™

Продвинутый новичок
на уровне локализации
Выносить справочники в массивы локализации - насколько это правильное решение?

Я вижу такие костыли: невозможность делать выборки связанными таблицами, никаких JOIN-ов.

Плюсы: не надо затрагивать предметную область. Например, есть у нас объект типа "телефон" вида

Код:
id => 123
id_type => ид_типа
phone => 123-45-67
тогда вывод наименования типа телефона этого объекта будет довольно удобен:
PHP:
echo 'Тип телефона: ' . $local['phone_types'][$phone->id_type];  // Тип телефона: факс
$local['phone_types'] -- это, естественно,карта соответствия, "массивы вида вот такого вот как у тебя табличка phone_type".
 

korchasa

LIMB infected
Покапитаню
PHP:
foreach($user->getPhones() as $phone) {
echo $phone->getType($current_locale)." ".$phone->getNumber()
}
 

zerkms

TDD infected
Команда форума
triumvirat
там (барабанная дробь) текущая локаль!
 

Alexandre

PHPПенсионер
мои пять копеек: можно, как вариант, это реализовать в ввиде хедпера ко View
 
Сверху