API: Инструкции



Использование сниппетов


Для чего нужны сниппеты?


Сниппеты позволяют интегрировать любой ваш PHP и HTML-код непосредственно в среду визуальной верстки для написания собственных решений (например, вывести список страниц универсального модуля).


Сниппет всегда воспринимается компилятором как PHP-код, поэтому для исполнения PHP-скриптов обязательно наличие PHP-тегов (в стандартной конфигурации включена поддержка коротких тегов <? и ?>), но как и в любом php-файле вы также можете использовать HTML-теги.


Пример простейшего сниппета для получения списка страниц и их ID:


<?

$SR =& get_instance('smartriver');

$SR->load->model('smartriver');


$items = $this->smartriver->page(['where' => ['confirm' => 1]]);


if($items['status'] == 'ok'){

    ?>

    <ul>

        <?

        foreach($items['response'] as $item){

            ?>

            <li><?=$item['name'].' (ID '.$item['id'].')'?></li>

            <?

        }

        ?>

    </ul>

    <?

}

?>


Сниппеты бывают двух типов: произвольные и виджеты.


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


Также в сниппеты можно передавать параметры (делается это через элемент визуальной верстки, перечисление параметров идет через запятую).


Получить эти параметры в сниппете можно через символ #. Все параметры лучше присваивать в начале кода, во избежание непредвиденных ситуаций


Пример сниппета с параметрами:


<?

$SR =& get_instance('smartriver');

$SR->load->model('smartriver');


$param_1 = #param_1;

$param_2 = #param_2;

$param_3 = #param_3;


print_r($param_1);

print_r($param_2);

print_r($param_3);

?>

$param_1, $param_2, $param_3 - это переменные, которые вы будете использовать в своем PHP коде, #param_1, #param_2, #param_3 - это своего рода теги параметров, переданных через визуальную верстку, неважно как вы их назовете (но, рекомендуется аналогично php-переменным, чтобы не было путаницы), важен лишь порядок, т.е. #param_1 идет первым в визуальной верстке, #param_2 - вторым и т.д.


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




Использование MVC


Что такое MVC.


MVC - это стандартная схема распределения данных Model-View-Controller, при которой каждый из этих трех компонентов выполняет свою роль: модель - набор инструментов для взаимодействия с вашим модулем, представление (вьюшка) - отображение данных пользователю, контроллер - интерпретатор действий пользователя, который оповещает модель о необходимости тех или иных действий.


Движок SE4 дает возможность создавать любой из этих трех компонентов и связывать их друг с другом, таким образом позволяя создавать свои полноценные модули, которые могут иметь собственную логику и более расширенный функционал для вашего сайта.


При создании контроллера (как основного компонента вашего модуля) подразумевается, что будет создана и модель, поэтому для удобства в конструкторе сразу есть строка (изначально закомментированная), подключающая модель с аналогичным именем.


Также необходимо иметь ввиду, что название вашего контроллера это прямая ссылка исполняющего скрипта, поэтому контроллеры с некоторыми именами невозможно будет создать, т.к. они зарезервированы системой. Например, при создании контроллера flight, перейти к исполнению индексного (index) скрипта можно по ссылке https://your_site/flight. Если же необходимо вызвать другой метод, например start, то ссылка будет иметь вид https://your_site/flight/start


Для того, чтобы вывести данные пользователю, достаточно создать представление (вьюшку) и наполнить ее своей HTML-версткой.


В контроллере отобразить вьюшку можно используя метод


$this->load->view('flight', ['passanger' => $passanger, 'seat' => $seat]);

где первый параметр - это название вашей вьюшки в системе SE4, а второй - массив данных, которые необходимо передать из контроллера во вьюшку.

Все методы, описанные в документации по API SmartRiver доступны для использования в контроллерах и моделях при условии корректного подключения, описанного на странице введения. Необходимо помнить о том, что если SmartRiver уже подключен в контроллере, который запускает вашу модель, то в этой модели повторное подключение не требуется.

Более детальная информация по работе с MVC по ссылкам:
Контроллеры - https://codeigniter.com/userguide3/general/controllers.html

Модели - https://codeigniter.com/userguide3/general/models.html

Вьюшки - https://codeigniter.com/userguide3/general/views.html



Использование Active Record


Что такое Active Record.


Active Record - это один из популярных способов доступа к данным, которые содержатся в Базе Данных сайта.


Использовать Active Record можно как в сниппетах так и в контроллерах и моделях.


Для использования Active Record в сниппете не нужно совершать никаких дополнительных действий, можно начать использовать методы сразу.Для использования Active Record в контроллерах и моделях необходимо сначала установить соединение с БД, используя конструкцию:


$this->load->database();

Обычно это делается в конструкторе (__construct) - если речь идет о контроллере. Таким образом, в любой вашей модели, связанной с этим контроллером, не нужно будет производить каких-либо дополнительных действий и Active Record будет также доступен и там.



Все методы Active Record содержатся в объекте $this->db


Константы из руководства:

  • YOUR_QUERY - любой корректный SQL-запрос
  • DB_TABLE - таблица из вашей БД с которой идет взаимодействие
  • SELECT - строка с набором полей для выборки из БД


1) Выполнение произвольного SQL-запроса (необходимо в случае, если ни один из методов Active Record или SmartRiver вам не подходит и нужно написать что-то уникальное):


Стандартное выполнение 


$this->db->query(YOUR_QUERY);


Если необходимо получить массив данных (только для выборки)


$this->db->query(YOUR_QUERY)->result_array();


Если необходимо получить объект данных (только для выборки)


$this->db->query(YOUR_QUERY)->result();


Если необходимо получить одиночный объект (только для выборки)


$this->db->query(YOUR_QUERY)->row();



2) Получение скомпилированного запроса на добавление данных


$sql = $this->db->set($data)->get_compiled_insert(DB_TABLE);

$sql - полученная строка с запросом

$data - массив данных для вставки


 Чтобы выполнить полученный запрос, необходимо использовать метод из п.1, т.е $this->db->query($sql);


Получить ID только что созданного элемента можно с помощью метода $this->db->insert_id();



3) Получение скомпилированного запроса на обновление данных


$sql = $this->db->where($where)->set($data)->get_compiled_update(DB_TABLE);

$sql - полученная строка с запросом

$where - массив с условиями обновления

$data - массив данных для обновления


Чтобы выполнить полученный запрос, необходимо использовать метод из п.1, т.е $this->db->query($sql);



4) Непосредственное добавление записи


$this->db->insert(DB_TABLE, $data);

$data - массив данных для вставки


Получить ID только что созданного элемента можно с помощью метода $this->db->insert_id();



5) Непосредственное обновление записи


$this->db->where($where)->update(DB_TABLE, $data);

$where - массив с условиями обновления

$data - массив данных для обновления



6) Получение данных


массив данных


$this->db->where($where)->select(SELECT)->get(DB_TABLE)->result_array();


объект данных


$this->db->where($where)->select(SELECT)->get(DB_TABLE)->result();


одиночный объект


$this->db->where($where)->select(SELECT)->get(DB_TABLE)->row();



7) Удаление записи


$this->db->where($where)->delete(DB_TABLE);

$where - массив с условиями удаления


Более детальная информация о всех существующих методах Active Record текущей версии движка доступна по ссылке.





Мы используем файлы cookie, чтобы сделать работу с сайтом проще и удобнее. Подробную информацию можно прочитать тут

totop