Разработка web-сайта о кафе, барах и ресторанах города Челябинска

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



?им.

По умолчанию, index.php будет подключаться URL:

www.your-site.com/index.php/news/article/my_article

Чтобы удалить этот файл из запроса, необходимо сделать несколько записей в файле .htaccess. Вот пример файла, в котором будут перенаправлены все запросы, кроме указанных:

RewriteEngine on$1 !^(index\.php|images|robots\.txt)

RewriteRule ^(.*)$ /index.php/$1 [L]

В приведенном выше примере, любой запрос HTTP, помимо запросов к index.php, изображениям и robots.txt, трактуется как запрос к файлу index.php.

В файле config/config.php можно указать суффикс, который будет добавляться ко всем адресам, созданным CodeIgniter. Например, если URL такой:

www.your-site.com/index.php/products/view/shoes ,

то можно добавить произвольный суффикс, например .php, сделав все страницы похожими на:

www.your-site.com/index.php/products/view/shoes.php

Подключение строки запроса.

В некоторых случаях нужно использовать строки запроса в URL:

index.php?c=products&m=view&id=345

CodeIgniter опционально поддерживает эту возможность, которая может быть подключена в файле application/config.php. В конфигурационном файле есть следующие строки:

$config[enable_query_strings] = FALSE;

$config[controller_trigger] = c;

$config[function_trigger] = m;

Если изменить enable_query_strings в положение TRUE, то эта возможность активируется. Контроллеры и функции в них будут доступны при помощи определенных триггерных слов:

index.php?c=controller&m=method

Контроллеры

Контроллеры - это сердце приложения. В контроллере определяется, как необходимо реагировать на тот или иной запрос.

Контроллер это простой файл с классом, названным так чтобы ассоциироваться с URI, по которому он будет вызван.

Рассмотрим URI:

www.your-site.com/index.php/blog/

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

Когда имя контроллера будет найдено в первом сегменте URL - он будет загружен.

Для примера создадим простой контроллер, чтобы посмотреть его в действии. Используя текстовый редактор, создаем файл blog.php и вставляем в него следующий код:

<?phpBlog extends Controller {index()

{Hello World!;

}

}

?>

Затем сохраняем этот файл в директории application/controllers/.

Теперь заходим на сайт, используя примерно такой адрес:

www.your-site.com/index.php/blog/

В итоге на сайте должны увидеть Hello World!.

Отмечу особенность, что имена классов должны начинаться с прописных букв.

Правильный вариант:

<?phpBlog extends Controller {

}

?>

Неправильный вариант:

<?phpblog extends Controller {

}

?>

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

Функции.

В приведенном выше примере функция называется index(). Функция с названием index всегда будет загружаться по умолчанию, если второй сегмент в URL не определен. Еще один способ просмотреть сообщение Hello World - обратиться по этому адресу:

www.your-site.com/index.php/blog/index/

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

Для проверки добавим функцию в ранее созданный контроллер:

<?phpBlog extends Controller {index()

{Hello World!;

}comments()

{Взгляни сюда!;

}

}

?>

Чтобы посмотреть на работу функции comment, загружаем следующий адрес:

www.your-site.com/index.php/blog/comments/ ,

где можно увидеть новое сообщение Взгляни сюда!.

Передача сегментов URL функциям.

Если URI содержит более двух сегментов - они будут переданы функции в качестве параметров.

Например, можно вызвать такой адрес:

www.your-site.com/index.php/products/shoes/sandals/123

Функция получит 3 и 4 сегменты в URL (sandals and 123):

<?phpProducts extends Controller {shoes($sandals, $id)

{$sandals; $id;

}

}

?>

Следует отметить, если вы используете URI Роутинг, то сегменты адреса, направленные в функцию, будут сегментами route-адреса.

Объявление контроллера по умолчанию.

Можно сказать CodeIgniter, какой контроллер необходимо загружать, если URI не объявлен. Это возникает при запрашивании корня сайта. Чтобы установить контроллер, выполняемый по умолчанию, в файл application/config/routes.php следует установить эту переменную:

$route[default_controller] = Blog;

Где Blog - это имя контроллера, который нужно использовать. При загрузке основного index.php, появится приветственное сообщение Hello world.

Переадресация вызова функции.

Как было отмечено выше, второй сегмент URI определяет, какая функция должна быть вызвана в этом классе. CodeIgniter позволяет переопределить это поведение при помощи функции _remap():

_remap()

{

// Здесь любой код...

}

Если контроллер содержит функцию _remap(), то она всегда будет определять, какую функцию загружать независимо от того, что написано в URL запросе. Она перекрывает нормальное поведение контроллера, создавая свой локальный роутинг.

В _remap() передается название вызываемой функции, обычно это второй сегмент в URI:

function _remap($method)

{($method == some_method)

{

$this->$method();

}

{

$this->default_method();

}

}

Результат обработки.имеет класс вывода, который принимает готовое отображение и отдает его браузеру пользователя. В некоторых случаях может понадобиться пост-обработка сформированного отображения, и выдача ее браузеру самостоятельно. CodeIgniter позволяет добавить в контроллер функцию _output(), которая будет принимать готовые к выдаче данные.

Если контроллер содержит функцию называющуюся _output(), то в нее всегда будут передаваться отрендеренные отображения, вместо того чтобы от