====== Пример 2. Как создать электронный магазин при помощи Limb ====== ===== Цели данного примера ===== * Показать использование пакета WEB_APP на реальной задаче. * Показать, как в Limb3 интегрируются пакеты WACT, DBAL, ACTIVE_RECORD и WEB_APP. * Рассказать о внутреннем устройстве приложения, выполненном на базе Limb3. Код данного примера можно найти в разделе c [[http://examples.limb-project.com|примерами использования Limb3]] ===== Необходимые знания ===== Мы полагаем, что мы уже выполнили [[basic|первый пример создания приложения на базе Limb3]] и имеете начальное представление, что такое ACTIVE_RECORD и WACT. Плюсом будет, если вы кратко просмотрите содержимое следующих разделов: * [[limb3_2007_4:ru:packages:active_record|Работа с пакетом ACTIVE_RECORD]]. * [[limb3_2007_4:ru:packages:wact|Работа с пакетом WACT]]. Особо вчитываться пока может и не стоит. В процессе описания примера мы постараемся указывать на все сложные и новые моменты, которые могут быть для вас незнакомыми по сравнению с первым примером. Если что-то требует большого описания, мы будем давать ссылки на соответствующие страницы документации. ===== Что из себя будет представлять пример ===== Пример - это электронный магазин, который будет позволять пользователям делать покупки из небольшого списка товаров и отслеживать состояние заказа. Приложение предусматривает регистрацию пользователей, разделение пользователей на покупателей и администраторов, хранение состояний в сессии, поиск по товарам и многое другое. Все это позволит рассмотреть Limb с различных сторон, а также показать некоторые типичные приемы работы с ним. ===== Системные требования ===== * Операционная система: *nix, Windows 98/ME/2000/XP * Веб-сервер: Apache 1.3+ (с подключенным модулем mod_rewrite) * PHP: PHP 5.1.4+ * Сервер базы данных MySQL 4.1+ или БД [[http://sqlite.org/|SQLite]] Если ваш веб-сервер обслуживает несколько доменов, то проект необходимо будет зарегистрировать в списке виртуальных хостов. Иначе же надо настроить DocumentRoot на директорию, где находятся файлы проекта. ===== Необходимые пакеты Limb ===== Для выполнения данного примера нам необходим пакеты WEB_APP, WYSYWIG, а также пакеты, от которых они зависят. Информацию о том, как получить пакеты Limb в разделе [[limb3_2007_4:ru:how_to_download|"Где и как скачать Limb3"]]. ===== Где взять готовое приложение? ===== Исходные коды примера можно получить через SVN: svn co https://svn.limb-project.com/3.x/examples/shop Мы будем использовать строку **shop** для указания пути, где лежат файлы готового приложения. Они могут нам потребоваться в процессе выполнения примера - мы будем брать оттуда некоторые файлы изображений, css-файлы и некоторые другие. ===== Далее ===== - [[.shop:step1|Шаг1. Более подробно о функциональности приложения]] - [[.shop:step2|Шаг2. Запуск приложения. База данных. Базовые шаблоны]] * Каркас приложения * Таблицы базы данных * Базовые шаблоны панели управления и фронтальной части - [[.shop:step3|Шаг3. Создание и отображение списка товаров для администраторов]] * Часто используемые шаблоны панели управления * Шаблоны, контроллер и модель для управления списков товаров * Загрузка пользовательских файлов (file upload) - [[.shop:step4|Шаг4. Защита панели управления от несанкционированного доступа]] * [[.shop:step4-1|Шаг4.1 Управление списком пользователей]] * Создание класса User * Создание и редактирование новых пользователей * [[.shop:step4-2|Шаг4.2 Аутентификация пользователей]] * Знакомство с тулкитом (Toolkit) * Работа с сессией в Limb * Хранение данных пользователя в сессии * Аутентификация пользователей * Передача произвольных сообщений в шаблон (FlashBox) * [[.shop:step4-3|Шаг4.3 Проверка прав доступа]] * Общая схема устройства приложения на базе Limb * Цепочка фильтров * Взаимодействие различных компонентов приложения * Создание своей частной цепочки фильтров * Создание фильтра, проверяющего необходимые права доступа * [[.shop:step4-4|Шаг4.4 Отображение профайла пользователя]] * Различные способы передачи данных в шаблон - [[.shop:step5|Шаг5. Отображение списка товаров для покупателей. Поиск товаров.]] * Создание и использование своих find()-методов в шаблонах * Вывод алфавитного списка. * Форма для поиска товаров. - [[.shop:step6|Шаг6. Работа покупателей с корзиной заказа]] * Классы Cart, OrderLine * Добавление товаров в корзину * Отображение содержимого корзины * Изменение состояния корзины (удаление элементов, полная очистка) - [[.shop:step7|Шаг7. Регистрация пользователей]] - [[.shop:step8|Шаг8. Оформление и сохранение заказа в базе данных]] * [[.shop:step8-1|Шаг8.1. Модель, связанная с заказами]] * Поддержка в lmbActiveRecord отношений один-ко-многим, много-ко-многим и один-к-одному. * Класс Order, изменения в классе OrderLine и User. * [[.shop:step8-2|Шаг8.2. Оформление заказа]] * Предварительное заполнение полей формы * Команды как еще одна форма повторного использования кода контроллеров. - [[.shop:step9|Шаг9. Работа с заказами]] - [[.shop:step10|Шаг10. Рекомендации по дальнейшему изучению]]