|
|
|
| Итак перемещаюсь сюда и задаю свой вопросик.....
Как вообще должен выглядеть контроллер страницы?.... Вот я себе представил его так..... прошу подсказать, в правильном вообще я направлении двигаюсь.....
опишу все схематично...... У меня есть 2 противополжных варианта.....
1. Вариант
class indexcontroller extends controller{
инициализация и т.п.
private(Или Protected) function display departlist(){
берем из модели данные именно касающиеся этого списка, оцениваем результат, парсим шаблон и возвращаем готовую строку. с html-разметкой..........
}
private(Или Protected) function displayitemslist(){
выполняет тоже, что и метод выше, но работает со своими данными....
}
public function run(){
запускает вышеописанные методы
}
public function go(){
запихиваем в него html строки, которые вернули методы выше,
отправляем заголовки, подключаем главный шаблон и отправляем все в браузер......
}
}
2 вариант..... отличается толлько тем, что мы не привязываемся к содержимому.... а имеем методы типа
Get data() который оптом получает данные от модели и оценивает и передает их в.........
send data() который занимается отправкой в браузер.....
Разница в том, что в первом случае контроллер выступает как конструктор страницы... т.е. на каждую сущность - у него свой метод, а во втором случае, он выступает как передаточное звено, гоняя через себя данные.........
или я вообще далек от истины? | |
|
|
|
|
|
|
|
для: jonik
(24.02.2012 в 22:49)
| | >берем из модели данные именно касающиеся этого списка, оцениваем результат, парсим
>шаблон и возвращаем готовую строку.
>или я вообще далек от истины?
Довольно таки да... А "Вид" у вас что будет делать? Вообще смысл этого паттерна в том, чтобы разделить логику от представления (а вы HTML в контроллер тащите). Т.е. создали вы модель, тут удобно - это база данных, создали дизайн страниц, сверстали, снабдили клиентским кодом - это вид. А вот регистрация пользователя, рассылка, постраничная навигация и пр., то что не зависит от дизайна, представления, но обслуживает базу данных - это контроллер. Вы вынимаете модель и контроллер из одного сайта, вставляете его в другой, меняете дизайн, компоновку, при этом в модели и в контроллере не меняется ни байта. А вы генерацию HTML в контроллер помещаете... это что угодно, но не контроллер. Это не значит, что так делать нельзя, просто лучше это не называть контроллером.
PS Web-разработка очень не удобная среда для изучения этих концепций, тут очень много языков и технологий. Контроллер у вас перемещается зачастую в JavaScript на строну клиента, код у вас выполняется на нескольких связанных сетью компьютерах... это все очень отвлекает, тем более, что тут многие задачи, для которых предназначался паттерн "Модель-Вид-Контроллер" решены совершенно другими средствами, тем же CSS, например. | |
|
|
|
|
|
|
|
для: cheops
(25.02.2012 в 14:02)
| | >(а вы HTML в контроллер тащите). >
Я, видимо, неточно объяснил..... конечно в методе контроллера HTML не будет... просто этот метод вызовет нужный метод класса display который уже и будет подключать шаблон, парсить и подставлять в него данные.....
Ну да ладно, как вы правильно сказали, Web-разработка очень не удобная среда для изучения этих концепций. Разговариваю на работе с C-програмистом и реально понимаю, насколько разная специфика и подход. | |
|
|
|