webasyst alpha

  • Фреймворк
  • Приложения
  • Помощь
  • Блог
  • Скачать
  • Демо
  • Возможности
  • Лицензия
  • Документация Webasyst
    • Введение
    • Установка
    • Создание сайта
      • Пример: создание сайта
      • Сайты и маршрутизация
      • Шаблоны и темы оформления
      • Страницы и общие блоки
    • Разработка приложений
      • Пример: приложение «Гостевая книга»
      • Приложение-пустышка
      • Файловая структура
      • Конфигурационные файлы
      • Шаблоны
      • Интерфейс
      • База данных
      • Правила и рекомендации по именованию
      • Маршрутизация в бекенде
      • Маршрутизация во фронтенде
      • Экшены и контроллеры
      • Композитные макеты
      • Права доступа
      • AJAX
      • Переменные окружения
      • Сессии
      • Локализация
      • Мобильная версия
      • Работа с почтой
      • Работа с изображениями
      • Загрузка файлов на сервер
      • Журнал действий пользователя
      • Интеграция с приложением «Сайт»
      • Интеграция с приложением «Контакты»
      • Действия по расписанию
      • Адаптеры авторизации
      • Плагины
    • Настройки сервера
      • Nginx + FastCGI
      • Настройка Cron

Маршрутизация в бекенде

В текущей версии фреймворка маршрутизация запросов в бекенд не конфигурируется и подчиняется жёстким правилам (которые тем не менее могут быть переопределены внутри приложения).

Бекенд всех приложений находится в адресном пространстве http://{ДОМЕННОЕ_ИМЯ}/{ПУТЬ_К_ФРЕЙМВОРКУ}/webasyst/*. Бекенд каждого приложения находится в адресном пространстве http://{ДОМЕННОЕ_ИМЯ}/{ПУТЬ_К_ФРЕЙМВОРКУ}/webasyst/{APP_ID}/*, где APP_ID — это идентификатор приложения.

Соответствие между URL запроса и классом и методом, вызываемым для обработки запроса, определяет класс — фронт-контроллер. По умолчанию (если в приложении не определен свой индивидуальный фронт-контроллер) используется системный класс waFrontController, который работает по описанным ниже правилам.

Логика работы системного фронт-контроллера

Страницы приложения доступны по адресу вида /webasyst/{APP_ID}/[?module=MODULE][&action=ACTION][&ДОПОЛНИТЕЛЬНЫЕ_ПАРАМЕТРЫ]. Системный фронт-контроллер waFrontController запускает конкретный модуль и экшен приложения, основываясь на значениях параметров module и action, полученных из GET-запроса. Оба параметра (module и action) являются необязательными, и в случае их отсутствия применяются правила выбора класса и метода по умолчанию. Значение по умолчанию для параметра module — backend. Системный фронт-контроллер waFrontController ищет для исполнения класс и метод в соответствии с правилами, описанными в разделе «Правила и рекомендации по именованию».

Примеры соответствия URL и вызовов методов модулей

Порядок поиска методов для обработки запроса на гипотетическом примере приложения с идентификатором myblog:

/webasyst/myblog/

  1. myblogBackendController->execute()
  2. myblogBackendActions->defautAction()
  3. myblogBackendAction->execute()

/webasyst/myblog/?module=mail

  1. myblogMailController->execute()
  2. myblogMailActions->defautAction()
  3. myblogMailAction->execute()

/webasyst/myblog/?module=mail&action=test

  1. myblogMailTestController->execute()
  2. myblogMailActions->testAction()
  3. myblogMailTestAction->execute()

Система ищет класс и метод в указанной последовательности и запускает первый, который нашла.

Переопределение правил маршрутизации в бекенде

Если правила маршрутизации в бекенде вашего приложения требуют изменения правил по умолчанию, необходимо переопределить фронт-контроллер для вашего приложения. Для этого создайте свой класс, унаследованный от класса waFrontController. Логику маршрутизации реализуйте в методе dispatch.

Затем добавьте в файл wa-apps/{APP_ID}/lib/config/factories.php строку вида

'front_controller' => 'НАЗВАНИЕ_ВАШЕГО_КЛАССА'

Например, если ваш фронт-контроллер называется myblogFrontController, то содержимое файла factories.php должно выглядеть следующим образом:

<?php

return array(
    ...
    'front_controller' => 'myblogFrontController',
);
  • О компании
  • Фреймворк и WebAsyst.ru
    • Language
      • Русский
      • English

© 2011 Webasyst