Навигация
|
Codeigniter: Основные темыЧто такое контроллер? Контроллер это просто класс, который называется так, чтобы ассоциироваться с URI. Рассмотрим этот URI: Hello World! <?php public function index() Теперь посетите сайт, используя URL, соответствующий этому: Имя класса должно начинаться с большой буквы. Иначе говоря, вот это правильно: <?php }; } Также всегда проверяйте, чтобы ваш контроллер расширял класс родительского контроллера. Тогда он сможет наследовать все его функции. Функции Другой способ увидеть "Hello world" будет таким: Второй сегмент URI определяет, какая функция контроллера будет вызвана. <?php public function index() public function comments() Теперь загрузите следующий URL, чтобы увидеть функцию comments: Вы увидите ваше новое сообщение. Передача сегментов URI в ваши функции site/index.php/blog/article/news/123 Вашей функции будут переданы третий и четвертый сегменты URI ("news" and "123"): Переделаем blog.php: <?php public function index() public function comments() Вызовем site/index.php/blog/article/news/123 На экране увидим "news123" Приватные функции Чтобы сделать приватную функцию, просто добавьте символ подчеркивания перед ее именем, и она не будет обслуживаться через запросы URL. Например, если вы имеете функцию вроде этой: private function _utility()
Просто создайте новые директории внутри вашей директории application/controllers и поместите туда файлы с классами контроллеров. Примечание: При использовании этой функции первый сегмент URI будет указывать на директорию. Например, давайте предположим, что вы имеете контроллер, находящийся здесь: application/controllers/blog/blog.php Чтобы вызвать этот контроллер, ваш URI должен выглядеть примерно так: http://site/index.php/blog/blog/article/news/123 На экране увидим "news123"
Отображения это просто веб-страницы, или фрагменты страниц, такие как шапка, футер, колонка и т.д. Отображения никогда не вызываются напрямую, они должны быть загружены контроллером. Создание отображения Загрузка отображения $this->load->view('name'); Где name это имя файла отображения. Примечание: расширение .php можно не указывать, так как при желании вы можете использовать другое. Теперь откройте ваш файл контроллера blog.php, который вы сделали ранее, и замените echo() на следующую функцию: <?php public function index() Вызовем http://site/index.php/blog/blog/ (т.к. мы его переместили в подпапку в прошлом уроке) и увидим отображение. Загрузка множественных отображений Они будут объединяться. Например, вы можете иметь отображение шапки, меню, содержимого и футера. Это может выглядеть примерно так:
class Page extends CI_Controller { function index() } В примере выше мы использовали «динамически добавленные данные», как вы увидите ниже. $this->load->view('folder_name/file_name'); Добавление динамических данных в отображение $data = array( $this->load->view('blogview', $data); Давайте попробуем это в вашем контроллере. Откройте его(у меня это например из предыдущего урока blog.php) и измените на этот код: <?php public function index() $this->load->view('blogview', $data);
<html> Потом загрузите страницу, и вы увидите, что переменные используются. Создание циклов Вы можете передавать многомерные массивы, которые могут быть использованы для цикличной генерации множества строк. Например, если вы получили данные из вашей БД, они обычно будут в виде многомерного массива. Вот простой пример. Добавьте в ваш контроллер: <?php public function index() $data['title'] = "My Real Title"; $this->load->view('blogview', $data); Теперь откройте ваш файл blogview.php в application/views, и создайте цикл: <html> <h3>My Todo List</h3> <ul> echo "<li>$item</li>"; endforeach; </body> И вызовем: http://site/index.php/blog/blog/
Модели опционально доступны для тех, кто хочет следовать более традиционному подходу MVC. Что такое модель? Анатомия модели Основной прототип моделей таков: class Model_name extends CI_Model { function __construct() Где Model_name — это имя вашего класса. Имена классов должны начинаться с большой буквы, а остальная часть названия должна быть в нижнем регистре. Убедитесь, что ваш класс расширяет основной класс Model. Имя файла соответствует имени класса, но пишется полностью в нижнем регистре. Если ваш класс называется "Model_name", то файл будет таким: application/models/model_name.php Загрузка моделей $this->load->model('model_name'); Если ваша модель находится в поддиректории, включите относительный путь от директории моделей. Например, если модель находится в application/models/blog/queries.php, загружайте ее, используя: $this->load->model('blog/queries'); Загруженная модель доступна для использования по имени ее класса: $this->load->model('model_name'); $this->model_name->function(); Если вы хотите ассоциировать вашу модель с именем другого объекта, вы можете указать его во втором параметре функции: $this->load->model('model_name', 'fubar'); $this->fubar->function(); Вот пример контроллера, который загружает модель, и затем обслуживает отображение: class Blog_controller extends CI_Controller { function blog() $data['query'] = $this->blog->get_last_ten_entries(); $this->load->view('blog', $data); Автозагрузка моделей Чтобы сделать это, откройте ваш файл application/config/autoload.php и добавьте модель в массив автозагрузки.
Помощники, как понятно из названия, помогают вам решать задачи. Каждый файл помощника — это просто коллекция функций в определенной категории. Есть помощники URL, которые помогают создавать ссылки, есть помощники Form, которые помогают создавать элементы форм, помощники Text выполняют различные операции форматирования текста, помощники Cookie устанавливают и считывают куки, помощники File помогают вам работать с файлами и так далее. CodeIgniter не загружает файлы помощников по умолчанию, поэтому первым шагом при использовании помощников является их загрузка. Загруженные помощники доступны в ваших контроллерах и отображениях. Помощники обычно храняться в директориях system/helpers и application/helpers . CodeIgniter сначала ищет в директории application/helpers. Если эта директория не существует, или если указанный помощник в ней не обнаружен, CodeIgniter будет искать в глобальной директории system/helpers. Загрузка помощника $this->load->helper('name'); Где name это имя файла помощника, без расширения .php, и постфикса _helper. Чтобы загрузить файл помощника URL, который называется url_helper.php, сделайте следующее: $this->load->helper('url'); Загрузка нескольких помощников $this->load->helper( array('helper1', 'helper2', 'helper3') ); Автозагрузка помощников Использование помощника Например, чтобы создать ссылку используя функцию anchor() в одном из ваших отбражений, вы можете сделать так: <?php echo anchor('blog/comments', 'Click Here');?> Где "Click Here" это имя ссылки, и "blog/comments" это URI к контроллеру и функции, с которыми связывает эта ссылка.
Использование библиотек CodeIgniter $this->load->library('class name'); Где class name — это имя класса, который вы хотите загрузить. Например, чтобы загрузить библиотеку валидаци форм, сделайте так: $this->load->library('form_validation'); Загруженный класс вы можете использовать, как показано на страницах Руководства, посвященных этому классу. Вы можете загрузить несколько библиотек, передав массив. $this->load->library(array('email', 'table'));
В большинстве случаев используется соответствие один-к-одному между строкой URL и соответствующим методом и классом контроллера. Обычно сегменты URI соответствуют этому шаблону: example.com/class/function/id/ Установка ваших собственных правил В нем вы найдете массив $route, который позволяет вам определить собственные критерии роутинга. Роуты могут быть определены посредством шаблонов или регулярных выражений Шаблоны $route['product/(:num)'] = "catalog/product_lookup"; В шаблоне ключи массива определяют совпадающий URI, а значения указывают на метод контроллер, который должен быть вызван. В примере выше, если слово "product" найдено в первом сегменте URI, и число во втором, будет загружен контроллер catalog и вызван его метод product_lookup. Вы можете указывать литеральные значения, или использовать два типа шаблонов: (:num) совпадет с сегментом, который содержит только цифры. Примеры: $route['journals'] = "blogs"; $route['blog/joe'] = "blogs/users/34"; $route['product/(:any)'] = "catalog/product_lookup"; $route['product/(:num)'] = "catalog/product_lookup_by_id/$1"; Регулярные выражения Пример: $route['products/([a-z]+)/(\d+)'] = "$1/id_$2"; В этом примере URI, соответствующий products/shirts/123 вызовет контроллер shirts и функцию id_123. Зарезервированные роуты $route['default_controller'] = 'welcome'; $route['404_override'] = ''; Комментарии пользователей Эту новость ещё не комментировалиНаписать комментарий Анонимам нельзя оставоять комментарии, зарегистрируйтесь! |
Контакты Группа ВК | Код обмена баннерами | Видео к IT статьям на YoutubeВидео на другие темы Смотреть | |||
Мои друзья: | © Snakeproject.ru создан в 2013 году.При копировании материала с сайта - оставьте ссылку.Весь материал на сайте носит ознакомительный характер,за его использование другими людьми, автор ответственности не несет. |
||||
Поддержать автора и проект
|