Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > ЧПУ в MVC, какой подход лучше? |
Автор: Kotakota 26.2.2011, 22:04 |
Привет, хочу написать свой фреймворк. Возник вопрос по поводу ЧПУ. Возьмем к примеру, такой УРЛ: http://somesite.com/2011/01/01/news/archive Вывести архив новостей за 2011.01.01 Какой подход лучше использовать: 1. Роутер. Разбиваем УРЛ и смотрим, что подключать. 2. Использовать переменные типа: http://somesite.com/index.php?y=2011&m=01&d=01&directory=news&subdirectory=archive А потом с помощью mod_rewrite приводить это к http://somesite.com/2011/01/01/news/archive И еще вопрос при использовании первого метода, как лучше выделить контроллер, действие? |
Автор: SamDark 26.2.2011, 23:23 |
Роутер — более гибкое решение. http://rmcreative.ru/blog/post/mvc-front-controller-controller-i-router |
Автор: Muerto 27.2.2011, 00:49 |
SamDark Вы так пиарите Yii что соблазняет таки его заценить ![]() Я как то пытался с ним подружиться, но за место облегчения жизни , получил лишь осложнение ![]() У меня просто есть как бы мой фреймворк, на котором я леплю сайты, и поскольку писал его я, то он мне очень понятен и интуитивен Так что даже не знаю, выйграю ли я если насильно себя заставлю работать с Yii |
Автор: Noviy 27.2.2011, 18:08 |
Будущее за cmf ![]() |
Автор: SamDark 28.2.2011, 13:08 |
Muerto Я не пиарю особо, я просто его разрабатываю ![]() |
Автор: Kotakota 28.2.2011, 14:17 |
Спасибо. Еще пара вопросов по поводу MVC и роутера. 1. В некоторых просмотренных мной схемах MVC видел взаимодействия роутера с отображением (view). Роутер передает разобранный URL в контроллер, контроллер выполняет определенное действие взаимодействуя с данными из модели если это необходимо, а потом результат передается в отображение. Зачем нужна связь роутера и отображения непонятно? 2. Как лучше получить поисковую строку браузера? Через QUERY_STRING, $_SERVER или еще варианты? 3. Допустим разобранная строка находится в массиве arr[]. Планирую сделать так: arr[0] - контроллер arr[1] - метод arr[2] и arr[2..N] - параметры Правильно это будет или нет? 4. Не могу понять, зачем использовать mod_rewrite в .htaccess, там где мы берем URL, разбиваем его и подключаем то, что необходимо. В этом есть какая либо необходимость? Все ведь делается вручную. |
Автор: SamDark 28.2.2011, 18:22 | ||
1.
Это нормальная схема работы MVC. Что имеется ввиду под взаимодействием роутера и отображения? 2. Вариантов много. С разными серверами всё по-разному. Смотреть стоит на: HTTP_X_REWRITE_URL, REQUEST_URI, HTTP_HOST, ORIG_PATH_INFO, QUERY_STRING. Выглядеть это должно примерно как в http://www.yiiframework.com/doc/api/1.1/CHttpRequest/#getRequestUri-detail (нажать show). 3. Смотря что потом делать с этим. 4. Он используется по минимуму для того, чтобы убрать из URL index.php. |
Автор: Kotakota 28.2.2011, 20:24 |
1. http://www.youtube.com/watch?v=2EYzb3kjIDk Объясняет принципы MVC в PHP 2. Спасибо, интересный фреймворк. 3. А что потом с этим обычно делают? Передают контроллеру, разве нет? 4. Понятно. А чем плох "DirectoryIndex index.html" в конфигурации Апача или в .htaccess? |
Автор: SamDark 1.3.2011, 13:25 |
3. Да, но передавать можно в разном виде. Вот от вида и зависит, что надо делать. 4. Не знаю ![]() |
Автор: Kotakota 1.3.2011, 14:23 | ||
Что Вы имеет в виду, под разным видом? |
Автор: SamDark 1.3.2011, 16:30 | ||||||||
Ну, например, в контроллер они могу поступать так:
или
или
или
Вариантов бесконечно много. |
Автор: Kotakota 1.3.2011, 18:55 |
Вы наверное догадались, что дальше последует вопрос, а какой способ лучше? И вы правы ![]() Наверняка в Yii есть пример? |
Автор: SamDark 1.3.2011, 19:21 |
В Yii работают примерно в таком виде первые три способа. |