• Инструменты для разработчика

    • Самые удобные инстременты для разработчика, которые облегчат жизнь любого как начинающего так и продвинутого разработчика. Украшатели, уменьшители, конвертеры кодов. Доменные инструменты. Всё в одном комплекте.
  • Использование BB кодов. Тут указаны существующие BB коды на форуме.

[PHP] СОЗДАНИЕ ДВИЖКА НА CODEIGNITER 3 + HMVC. ЧАСТЬ 2 - ПИШЕМ МОДУЛИ SETTINGS И COMMON.

impuLse #IT

Администратор
Команда форума
Регистрация
12.03.2015
Сообщения
914
Репутация
448
Баллы
74
Награды
2
Адрес
mySQL
Лучшие ответы
0
  • Супер постер
  • Постер
Создание движка на CodeIgniter 3 + HMVC. Пишем модули settings и common.
В
Пожалуйста, Войти или Регистрация для просмотра содержимого URL-адресов!
мы с вами установили новую версию старого и надежнейшего фреймворка codeigniter, расширили наш codeigniter модульным расширением и настроили фундамент нашего будущего приложения. Теперь давайте создадим первые два модуля: один системный для хранения общей библиотеки с функциями доступными любому модулю. Второй модуль - settings - позволяющий выбрать и передать библиотекам все данные нашего сайта. В этом уроке подготовимся к созданию модуля page, который отвечает за генерацию,проверку и отображение страниц сайта. Так же в этой статье мы сделаем очень многое для нашего нового движка.

МОДУЛЬ SETTINGS. БАЗА ДАННЫХ НАСТРОЕК И КОНТРОЛЛЕР ВЫБОРКИ ЗНАЧЕНИЙ НАСТРОЕК
  • Создаем папку settings в папке modules
  • Создаем в папке common каталог - controllers
  • В папке с контроллером(controllers) создадим новый файл файл settings.php
  • Открываем phpMyAdmin и созданную ранее базу CI3
  • Добавляем таблицу settings со следующей структурой
    PHP:
    Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
  • Далее наполняем таблицу данными(настройками и описанием сайта)
    PHP:
    Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
Давайте немного разберемся что мы сделали с таблицей. Структура следующая: в одной строке - одна настройка для сайта, следовательно можно расширять настройки всего сайта а не использовать отдельные ячейки для отдельных настроек. У нас будет name - название настройки на латинице, value - значение ячейки и description - описание настройки(данная ячейка не обязательна)

В дампе таблицы выше я уже добавил заготовленные за ранее настройки для будущего проекта. И так что мы имеем:
  • Sitename - название сайта. Можно выводить как название сайта в шаблоне, или указывать данное значение в роли отправителя письма с сайта.
  • email - указываем email на сайте, что бы вывести в контактах например.
  • email_sender - указываем ящик отправителя писем с сайта(понадобится при настройке отправки писем с сервера, нужно будет указывать реальный ящик созданный на
  • хостинге и прикрепленный к домену)
  • tel1 - телефон для контактной информации
  • tel2 - еще один телефон для контактной информации
  • adress -адрес для контактной информации
  • yandex_metrika - код счетчика яндекс метрики или любой другой
  • google_analytics - код аналитики гугл
  • email_order - в этом поле указываем почтовые ящики получателей системных писем сайта и заявок
  • Captcha - устанавливаем использовать ли на сайте капчу или нет
  • title_suffix - задаем суффикс ко всем заголовкам страниц сайта
  • send_mail - отправляем заявки с сайта на указанные почтовые ящики или нет

Как видим ни чего сложного - минимум настроек необходимый для любого приложения. Теперь стоит написать функцию выборки всех данных настроек для удобной передачи и работы с ними на всем сайте. Открываем файл /modules/settings/controllers/Settings.php
PHP:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
В конструкторе мы подключаем еще не созданную библиотеку main_lib чуть ниже рассмотрим код и создадим и ее. Две функции - одна для выборки всех настроек, вторая для выборки настройки сайта по ее названию. function get_settings() выбирает все строки из таблицы settings. Создаем пустой массив $data. По выбранным данным из базы мы проходим циклом foreach и записываем в новый массив все данные по типу имя => значение. Зачем нам так делать? Во первых что бы можно было обращаться к настройкам с любого модуля проверяя наличие элемента в массиве по имени самой настройки и выводя лишь его значение. Возвращаем собранный массив. Теперь можно обратиться и вызвать любую настройку сайта просто - echo $data['sitename']. C функцией выборки единственного параметра вы разберетесь сами, ничего сложного.

МОДУЛЬ COMMON И БИБЛИОТЕКА MAIN_LIB
  • Создаем папку common в папке modules
  • Создаем в папке common каталог - libraries
  • В папке с библиотеками(libraries) файл main_lib.php

Открываем файл main_lib.php и создаем класс с именем Main_lib. В конструкторе включим встроенный бенчмарк codeigniter
PHP:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
Теперь создадим несколько жизненно важных для будущего проекта методов(функций), которые помогут нам работать со всеми модулями движка. Поехали: функция render_main_page($data)
PHP:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
Необычный код для человека, впервые столкнувшимся с иерархической структурой модели-вид-контроллер. Функция уже принимает и обрабатывает данные при вызове. $data - это массив с содержанием всех данных для последнего шага - рендера и отображения главного шаблона со всеми данными. Так что принимаем наш массив и добавляем в него элементы - переданные, недавно созданной функции - выбрать все настройки. Выборку всех настроек мы повесим на наше расширение HMVC. Подробнее о работе функций echo modules::run('module/controller/method', $var_1, ...$var_n) или $this->load->module('module') вы можете почитать на странице разработчика по ссылке указанной в первой статье либо на этом сайте на русском языке Вызвав метод класса settings модуля setttings - мы вернули массив со всеми значениями настроек и объединили его с массивом, который передал нам модуль вызвавший функцию render_main_page - в нашем уроке это будет модуль Page.

Далее с помощью встроенного парсера codeigniter выведем наш шаблон из папки /themes/site/index.tpl передав весь массив с данными.

Для данного урока и всех последующих статей данного цикла мы создадим простенький шаблон на основе бутстрапа. Возьмем уже имеющуюся заготовку блога на сайте
Пожалуйста, Войти или Регистрация для просмотра содержимого URL-адресов!

PHP:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
Описывать код верстки мы не будем. А обратим внимание на то, как изящно мы выводим наши данные. В тело шаблона выводим переменную $content - простым заключением в фигурные скобки. Для примера так же выведем несколько настроек - информацию о сайте в футер, так же заключив название переменных в фигурные скобки. Codeigniter парсит название переменных и выводит содержание. {content} - аналогично можно вызвать echo $content. Позже мы будем записывать в эту переменную всю верстку сгенерированную нашими модулями.
ВЫЗОВ БИБЛИОТЕКИ И ФУНКЦИИ RENDER_MAIN_PAGE ИЗ МОДУЛЯ WELCOME.
Итак мы перешли к главному - тестированию наших новых функций. Давайте сперва зададим несколько настроек в конфигурации нашего codeigniter для дальнейшей полноценной работы движка.

Открываем файл /application/config/autoload.php из названия вы наверное догадались что речь пойдет о библиотеках и помощниках, которые загружается в нашем приложении автоматически при работе любого контроллера. Добавляем библиотек session parser и database в строке 61 заменим значение<br?> $autoload['libraries'] = array();
на наше:
$autoload['libraries'] = array('session', 'parser', 'database');

Они понадобятся нам для работы с базой данных, и вывода шаблона.

Настало время подключить уже все библиотеки и запустить рендер страницы, передав некоторые данные нашей функции. Правим файл /modules/welcome/controllers/welcome.php
PHP:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
Как вы видите - мы подключаем в конструкторе класса библиотеку main_lib из модуля common, передавая в с именем content данные для вывода. Запускаем...

Обратите внимание: наша библиотека и функция генерации страницы:передали данные с содержанием страницы и вывели ее с помощью парсера {content} и таким же методом вывели название сайта в футер. Кому лень с нуля писать и создавать все модули - можете скачать исходники данного урока.
Пожалуйста, Войти или Регистрация для просмотра содержимого URL-адресов!
База в комплекте.

Статья взято из сайта polyakov.co.ua
 
Сверху Снизу