PHP framework CodeIgniter: создаем небольшой web сайт

Владимир | | CodeIgniter, PHP.

логотип для каталога книг
В прошлый раз мы установили и настроили CodeIgniter. Теперь посмотрим, какие возможности он нам предоставляет.

Т.к. изучать фрэймворки (да и программирование вообще) лучше всего на примерах, создадим небольшой web сайт.

Допустим, нам нужен каталог книг. Для каждой книги у нас есть следующие данные:
— название;
— автор;
— количество страниц;
— жанр;
— аннотация.

Вся эта информация должна храниться в базе данных, которая называется bookcatalog. Создать ее можно с помощью SQL запроса:

CREATE DATABASE `bookcatalog` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

В этой базе создадим таблицу books:

CREATE TABLE `bookcatalog`.`books` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`title` VARCHAR( 100 ) NOT NULL ,
`author` VARCHAR( 100 ) NOT NULL ,
`pages` INT NOT NULL ,
`genre` VARCHAR( 60 ) NOT NULL ,
`annotation` TEXT NOT NULL
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci

Наша таблица содержит шесть полей:
id – порядковый номер записи в таблице (первичный ключ);
title – название книги;
author – имя автора;
pages – количество страниц;
genre – жанр книги;
annotation – аннотация.

Для отображения этих данных нам понадобится две страницы. На главной будет показан общий список книг (без аннотаций). На второй странице поместим подробное описание выбранной книги.

Теперь разберем, как это все реализовать с помощью CodeIgniter.

Все скрипты нашего приложения должны быть размещены в папке system/application/.
Контроллеры в папке system/application/controllers, модели – в system/application/models, а представления – в system/application/controllers/views.

Прежде всего, нам нужно создать контроллер. Для этого в папке system/application/controllers создаем файл catalog.php и записываем в нем следующий код:

<?php
class Catalog extends Controller {
    function Catalog() {
        parent::Controller();
    }
}
?>

Как видите, мы просто объявили новый класс, который наследует Controller. Имя класса должно совпадать с названием файла и начинаться с заглавной буквы.

Примечание. Вы, наверное, заметили, что в папке system/application/controllers уже находится файл wellcome.php. Этот контроллер создает стандартное приветственное сообщение.

Теперь нам нужно сделать наш контроллер используемым по умолчанию. Для этого в файле system/application/config/routes.php изменяем значение переменной $route['default_controller']:

$route['default_controller'] = "catalog";

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

Все ссылки для навигации внутри сайта должны иметь следующую структуру:

http://www.sitename.domain/index.php/controller/method/value1/value2/value3/...

Первым, как обычно, идет адрес сайта. Сразу за ним файл index.php, который находится в корне нашего сайта и обрабатывает все вызовы.

Третий параметр (controller) – это имя файла контроллера.
Четвертый (method) – имя метода контроллера, который мы хотим вызвать.
Пятый, шестой и т.д. (value1, value2, value3) – параметры, которые будут переданы методу. Эти параметры необязательные.

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

function index() {
}
function bookdetails($bookid) {
}

Метод index() будет вызван, если название метода в адресе не указано. Например, http://www.mysite.com/index.php/catalog будет автоматически преобразовано в http://www.mysite.com/index.php/catalog/index/.

Этот метод будет создавать главную страницу нашего каталога.

Второй метод (bookdetails) создает страницу с подробной информацией о выбранной книге. Поэтому в качестве параметра мы передаем номер книги (чтобы упростить задачу, здесь просто используется значение поля id из БД).

Таким образом, ссылка http://www.mysite.com/index.php/catalog/bookdetails/4 приведет нас на страницу с подробным описанием книги, для которой в БД значение поля id равно 4. При этом, значение переменной $bookid будет равно 4. Т.е. мы сразу получаем доступ к значениям, переданным в запросе, без обработки массивов $_GET и $_POST.

Примечание. Это не единственный способ передачи данных. Например, значения, отправленные странице с помощью формы, будут передаваться в массиве $_POST. Кроме того, мы в любом случае должны проверить полученные данные перед использованием.

С навигацией и структурой сайта мы разобрались. В следующий раз я расскажу о работе с базой данных.

До встречи!

Интересные материалы

Любите общаться в интернете? У нас вы можете бесплатно скачать квип — один из лучших мессенджеров.