<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://limb.nohau.ru/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://limb.nohau.ru/feed.php">
        <title>Фремворк Limb - limb3:ru:tutorials:shop</title>
        <description></description>
        <link>https://limb.nohau.ru/</link>
        <image rdf:resource="https://limb.nohau.ru/lib/exe/fetch.php?media=wiki:dokuwiki.svg" />
       <dc:date>2026-11-10T16:23:29+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step1&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step2&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step3-1&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step3-2&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step3-3&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step3-4&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step3&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step4-1&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step4-2&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step4-3&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step4&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step5&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step6&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step7-1&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step7-2&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step7&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step8-1&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step8-2&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step8&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step9&amp;rev=1289372570&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://limb.nohau.ru/lib/exe/fetch.php?media=wiki:dokuwiki.svg">
        <title>Фремворк Limb</title>
        <link>https://limb.nohau.ru/</link>
        <url>https://limb.nohau.ru/lib/exe/fetch.php?media=wiki:dokuwiki.svg</url>
    </image>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step1&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг1. Более подробно о функциональности приложения</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step1&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг1. Более подробно о функциональности приложения

Составим небольшое ТЗ на наше приложение

Роли пользователей сайта

Типичные роли пользователей нашего приложения:</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step2&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг2. Запуск приложения. База данных. Базовые шаблоны</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step2&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг2. Запуск приложения. База данных. Базовые шаблоны

Создание проекта

Наше приложение будет базироваться на базе пакета CMS. Создать приложение можно двумя способами:</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step3-1&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг3.1 Регистрация пользователей</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step3-1&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг3.1 Регистрация пользователей

План действий

	*  Мы создадим контроллер UserController, который будет содержать действия register для самостоятельной регистрации покупателей и</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step3-2&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг3.2 Аутентификация пользователей</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step3-2&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг3.2 Аутентификация пользователей

Хранение данных пользователя в сессии

Что такое toolkit?

Небольшое отступление...

Некоторые объекты являются особо популярными, и зачастую требуется иметь глобальный доступ к таким объектам в рамках всей системы (приложения). К таким объектам можно отнести Запрос (Request), Ответ (Response), Пользователь (User), Подключения к базам данных (…</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step3-3&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг3.3 Редактирование и отображение профайла пользователя</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step3-3&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг3.3 Редактирование и отображение профайла пользователя

Редактирование своего профайла

Пользователь должен иметь возможность сменить свой пароль, а также поменять свои контактные данные (например, email) при необходимости. Для этого мы реализуем действие edit, которое будет в себя включать весь нужный функционал.…</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step3-4&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг3.4 Управление списком пользователей</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step3-4&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг3.4 Управление списком пользователей

Одна из основных функций пакета CMS, это панель управления. Попасть в нее можно по адресу &lt;http://sitename/admin&gt; (логин: admin, пароль: secret). На этом
шаге мы построим CRUD-интерфейс для управления пользователями.</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step3&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг3. Пользователи, и все, что с ними связано</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step3&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг3. Пользователи, и все, что с ними связано

	*  Пользователи могут регистрироваться в нашем магазине.
	*  Панель управления должна содержать средства для просмотра списка пользователей, и редактирования их.</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step4-1&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг4.1 Управление списком пользователей</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step4-1&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг4.1 Управление списком пользователей

Создание класса User

Т.к. мы уже умеем создавать модели, контроллеры и шаблоны, то позволим себе немного расслабится и воспользоваться возможностью</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step4-2&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг4.2 Аутентификация пользователей</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step4-2&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг4.2 Аутентификация пользователей

Хранение данных пользователя в сессии

Что такое toolkit?

Небольшое отступление...

Некоторые объекты являются особо популярными, и зачастую требуется иметь глобальный доступ к таким объектам в рамках всей системы (приложения). К таким объектам можно отнести Запрос (Request), Ответ (Response), Пользователь (User), Подключения к базам данных (…</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step4-3&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг4.3 Отображение профайла пользователя</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step4-3&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг4.3 Отображение профайла пользователя

Различные способы передачи данных в MACRO-шаблон

Для отображения информации по текущему пользователю необходимо передать объект пользователя в шаблон. Это можно сделать несколькими способами:</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step4&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг4. Создание и отображение списка товаров для администраторов</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step4&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг4. Создание и отображение списка товаров для администраторов

Часто используемые шаблоны

Так как мы уже умеем создавать модели, контроллеры и шаблоны, то позволим себе немного расслабится, и воспользоваться возможностью</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step5&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг5. Отображение списка товаров для покупателей. Поиск товаров</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step5&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг5. Отображение списка товаров для покупателей. Поиск товаров

Последовательность наших действий будет следующей:

	*  Мы создадим специальный статический метод Product ::</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step6&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг6. Работа покупателей с корзиной заказа</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step6&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг6. Работа покупателей с корзиной заказа

Общая схема этого шага будет выглядеть следующим образом:

	*  Корзина будет представлена классом</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step7-1&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг 7.1. Модель связанная с заказами</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step7-1&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг 7.1. Модель связанная с заказами

Связи между классами

Наша модель по хранению заказов будет выглядеть следующим образом:



Поясним:

	*</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step7-2&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг 7.2. Отправка заказа</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step7-2&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг 7.2. Отправка заказа

Класс CartController оформление заказа

Приведем код изменений в классе, а потом поясним все моменты.

Файл shop/src/controller/CartController.class.php</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step7&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг 7. Оформление и сохранение заказа в базе данных</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step7&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг 7. Оформление и сохранение заказа в базе данных

	*  Оформление заказа требует сохранения в базе данных связей между объектами. Поэтому мы решили выделить отдельную страницу, которая покажет принципы работы со связями при помощи пакета ACTIVE_RECORD.</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step8-1&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг 8.1. Модель связанная с заказами</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step8-1&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг 8.1. Модель связанная с заказами

Связи между классами

Наша модель по хранению заказов будет выглядеть следующим образом:



Поясним:

	*</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step8-2&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг 8.2. Отправка заказа</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step8-2&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг 8.2. Отправка заказа

Класс CartController оформление заказа

Приведем код изменений в классе, а потом поясним все моменты.

Файл shop/src/controller/CartController.class.php</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step8&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг8. Работа с заказами</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step8&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг8. Работа с заказами

Итак, наши пользователи могут отсылать заказы. Теперь наша задача - расширить панель управления так, чтобы администраторы могли просматривать список заказов, а пользователи - просматривать сделанные ими заказы.</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step9&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Шаг9. Рекомендации по дальнейшему изучению</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3:ru:tutorials:shop:step9&amp;rev=1289372570&amp;do=diff</link>
        <description>Шаг9. Рекомендации по дальнейшему изучению

Надеемся, что у Вас хватило упорства дойти до этого шага, пройдя все остальные. Хочется верить, что Limb вам понравился, и вы рассмотрите его в качестве варианта основного фреймворка для вашей работы. Конечно, это приложение - еще не все, на что способен Limb, но примера должно хватить, чтобы понять, куда двигаться в дальнейшем при создании своих проектов на базе Limb.…</description>
    </item>
</rdf:RDF>
