Как сделать корзину покупателя используя Codeigniter и jQuery (часть 1)

Что такое CodeIgniter?

CodeIgniter это мощный и компактный php фреймворк, созданный для программистов, которым нужен небольшой и элегантный инструмент для создания полнофункциональных web-приложений. Если вы живете в современном мире, используете виртуальный хостинг, у вас есть дедлайны, и вы устали от огромных, неповоротливых и тщательно недокументированных фреймворков - CodeIgniter для вас!

В этой статье, я буду использовать последнюю стабильную версию CodeIgniter - 1.7.2. От читателя требуется небольшое понимание CodeIgniter и паттерна MVC. Итак, приступим!

Ресурсы

До того как мы начнем, вам необходимо скачать CodeIgniter и jQuery.

Или вы можете использовать хранилище от Гугла:

http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript

Структура папок

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

Так же необходимо создать папка assets, где мы будем хранить изображения, js скрипты, css и все остальное. Окончательная версия папок выглядит следующим образом:

Файл jquery-1.3.2.min.js и пустой файл core.js мы расположим внутри папки assets/js. В файле core.js будет находиться наш Javascript код. Так же создадим файл стилей. Пусть это будет core.css в папке assets/css.

База данных

Мы собираемся хранить нашу продукцию в базе данных, поэтому в создайте таблицу CI_Cart phpMyAdmin

После этого скопируйте и вставьте следующий SQL код...

  1. CREATE TABLE `products` (
  2. `id` int(128) NOT NULL AUTO_INCREMENT,
  3. `name` varchar(128) NOT NULL,
  4. `price` varchar(32) NOT NULL,
  5. `image` varchar(128) NOT NULL,
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Дальше, вставим данные в таблицу:

  1. INSERT INTO `products` VALUES(1, 'MacBook Pro', '1199', 'macbookpro.jpg');
  2. INSERT INTO `products` VALUES(2, 'MacBook Air', '1499', 'macbookair.jpg');
  3. INSERT INTO `products` VALUES(3, 'MacBook', '999', 'macbook.jpg');

Вот и все что необходимо сделать с нашей базой данных.

Шаг 1- настройка приложения

До того как использовать CodeIgniter, его надо настроить. Откройте application/config/config.php, и измените следующее:

  1. $config['base_url'] = "http://example.com";

Замените http://example.com на ваш адрес. Затем, взгляните на глобальную фильтрацию XSS, чуть ниже в этом файле.

  1. $config['global_xss_filtering'] = FALSE;

Замените False на True, чтобы активировать фильтрацию при передаче данных через GET, POST или COOKIE. Затем, откройте application/config/database.php и введите настройки вашей базы данных.

  1. $db['default']['hostname'] = "localhost";
  2. $db['default']['username'] = "root";
  3. $db['default']['password'] = "root";
  4. $db['default']['database'] = "CI_Cart";
  5. $db['default']['dbdriver'] = "mysql";

Далее, откройте application/config/routes.php и измените контроллер по умолчанию на "cart":

  1. $route['default_controller'] = "cart";

Теперь, когда кто-либо зайдет на ваш сайт, класс cart будет загружен автоматически.

Осталось отредактировать один файл application/config/autoload.php - для автоматической загрузки компонентов:

  1. /*
  2. | -------------------------------------------------------------------
  3. | Auto-load Libraries
  4. | -------------------------------------------------------
  5. | Этот класс лежит в папке system/libraries
  6. | или в вашей папке system/application/libraries
  7. |
  8. | Прототип
  9. |
  10. | $autoload['libraries'] = array('database', 'session', 'xmlrpc');
  11. */
  12. $autoload['libraries'] = array('cart', 'database');
  13. /*
  14. | -------------------------------------------------------------------
  15. | Автоматическая загрузка хелперов
  16. | -------------------------------------------------------------------
  17. | Прототип:
  18. |
  19. | $autoload['helper'] = array('url', 'file');
  20. */
  21. $autoload['helper'] = array('url', 'form');

Библиотеки

  • database - дает вашему приложению возможность соединяться с базой данных и делает доступным класс database.
  • cart - дает вам доступ к классу cart, подробнее.

Хелперы

  • url - библиотека url предоставляет вам различные методы для создания и получения ссылок, подробнее
  • form - эта библиотека помогает нам создавать формы,

Шаг 2 - контроллер Cart

Мы изменили контроллер по умолчанию на cart, но этот контролер еще не существует. И так, создадим новый файл application/controllers/cart.php и добавим базовый контролер.

Теперь создадим нашу функцию index. Она запуститься автоматически, когда будет запрошен класс cart.

Что здесь происходит? вы можете заметить, что мы сохраняем результат полученный от cart_model в переменную "$data['products']". Если мы обновим страницу, будет ошибка, так как cart_model еще нет.

Шаг 3 - создание модели

Что такое модель?

Модель это php класс, предназначенный для работы с информацией в вашей базе данных. Например, вы используете CodeIgniter для управления блогом. В таком случае функциями вашей модели могут быть insert, update, и retrieve (вставка, обновление и удаление записей в блоге).

Модели создаются в папке application/models; давайте создадим файл нашей модели cart_model.php и немножко отредактируем его.

Это так просто; мы создали нашу модель. Заметьте, что мы унаследовали нашу модель от класса Model. Помните мы вызывали нашу модель из функции index() в контролере cart? Мы вызвали функцию retrieve_products, давайте создадим ее!

Обновим страницу, и увидим следующее:

Мы создали нашу модель, хранящую функцию retrieve_products, вызываемую контролером cart, но мы забыли загрузить ее. Есть несколько способов загрузить модель, но в этой статье я буду делать это в конструкторе класса, т.е. в функции Cart в самом начале файла controllers/cart.php.

Теперь, давайте проверим вывод массива.

Если все сделано верно, вы увидите в браузере следующее:

Теперь, когда мы получили наш контент, отобразим его используя представление!

Шаг 4 - создаем представление

Что такое представление?

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

Откройте папку application/views и создайте новый файл index.php

Это основной шаблон. Как вы могли заметить, мы загружаем jQuery и таблицу стилей. Затем мы загружаем хелпер адресов, "base_url();", который возвращает адрес нашего приложения.

Так же загружаем представление, которое содержиться в переменной $content. Это позволяет нам динамически подгружать контент. Если мы присвоим '$content' 'demo', то будет загружено представление views/demo.php.

Шаг 5 - отправляем данные в наше представление

В третьем шаге, мы подготовили функцию index, и возвращаем все продукты из базы данных, но не отправляем данные в представление; итак откроем файл /application/controllers/cart.php

Как вы можете видеть, мы передаем переменную $content в 'cart/products'. Мы пока не сделали это представление, но сейчас займемся этим.

Создайте файл в application/views/cart и назовите его products.php. В этом файле мы отобразим файлы, которые мы получаем от нашей модели cart. Мы отобразим неотсортированный список наших продуктов.

Поскольку данные о продуктах находяться в массиве, сделаем цикл и отобразим все продукты:

Теперь, когда мы делаем цикл, мы можем отобразить наши данные о продуктах.

Посмотрим что происходит в коде:

Отображаем название продукта в h3.

Здесь мы используем функцию base_url, которая возвращает адрес нашего приложения, и обращаемся к папке assets/img. Затем запрашиваем рисунок продукта из базы.

В теге small отображаем цену.

Используем хелпер form для создания формы и установки action в "cart/add_cart_item".

В этой части пользователь может задать количество нужных ему товаров. Для создания input используется хелпер form_input, имя поле ввода "quantity" и значение по умолчанию - "1". Дополнительно указываем максимальную длину - 2 символа

Создаем скрытое поле - опять использую хелпер form и называем его "product_id".

Дальше, кнопка с именем "add" и подписью "Добавить"

И, наконец, закрываем fieldset и form. Теперь, добавим CSS.

Я добавил три рисунка в assets/img/products, в соответствии с данными в базе.

продолжение следует...

Related Posts

4 Responses to Как сделать корзину покупателя используя Codeigniter и jQuery (часть 1)

  1. gravatar

    Обязательно посмотрю

  2. gravatar

    Все правильно, но я бы написал по другому. Не в обиду но материал не весь)

  3. gravatar

    Материал действительно хороший.. (весь или не весь - решать уж автору )
    А продолжение будет!? Думаю, было бы интересно почитать...

  4. gravatar

    продолжение будет, обязательно будет :)

Leave a Reply

Mail will not be published