Ищу хороший способ организовать веб-приложение

#php #javascript #jquery #design-patterns

#php #javascript #jquery #дизайн-шаблоны

Вопрос:

Я делаю простое веб-приложение, которое работает примерно так: (упрощенный)

Страница выбора модуля: Когда пользователь выбирает модуль, появляется страница модуля

Страница модуля: Содержит кнопки для различных элементов. Нажмите на кнопку, и небольшой AJAX-скрипт извлекает элемент для обработчика модуля

Обработчик модуля: простой PHP-скрипт, вызываемый со страницы модуля через AJAX. Выполняет работу, запрашивая базу данных и проверяя разрешения

Моя проблема связана с проблемой первого элемента: когда пользователь попадает на страницу модуля, первый элемент должен быть уже отображен, но весь код для извлечения элемента находится в обработчике модуля.

Я мог бы, конечно, импортировать обработчик модуля на страницу модуля и запросить функции непосредственно в PHP, чтобы получить свой первый элемент, но включать обработчик, а затем вызывать его, кажется немного грязным.

Есть ли лучший способ сделать это?

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

1. Нет ничего плохого в том, чтобы включить обработчик .. поскольку, похоже, он вам нужен.

2. Хороший способ — использовать существующий фреймворк, такой как CakePHP.

3. @calum: Спасибо. Я знаю, что это работает, и похоже, что это необходимо, но это кажется неправильным, и я ищу способ это изменить

4. Yii — еще один хороший фреймворк.

Ответ №1:

Если вы ищете хороший шаблон проектирования для веб-приложения, не ищите дальше :

http://en.wikipedia.org/wiki/Model–view–controller

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

В вашем случае модули — это контроллеры, страницы — это представления, а обработчики — это модели.

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

1. Ну, как вы заметили, я более или менее следую шаблону MVC, за исключением того, что мой контроллер представляет собой скрипт jQuery. Моя проблема именно в этом: я столкнулся с решением, которое, по-видимому, требует от меня включения модели в представление, потому что представление должно быть инициализировано, а контроллер (на стороне клиента) еще не загружен.

Ответ №2:

Ну, я могу просто предложить, чтобы ваш первый просмотр был загружен, был пустым. Просто включите модуль по умолчанию, который вы хотите обработать. Таким образом, представление будет просто работать как маршрутизатор. Вместо того, чтобы перенаправлять его в запрос, он просто импортирует его и использует.