$event = new \Bitrix\Main\Event("mymodule", "OnCustomBeforeSave", array($value));
$event->send();
if ($event->getResults()) {
foreach ($event->getResults() as $evenResult) {
if ($evenResult->getResultType() == \Bitrix\Main\EventResult::SUCCESS) {
//Необязательно. Код для случая когда обработчик вернул успешных результат
}
else {
//Необязательно. Код для случая когда обработчик вернул неуспешный результат
}
}
}
mymodule
- код модуля в котором происходит событие.
OnCustomBeforeSave
- код события.
array($value)
- массив параметров передоваемых в обработчик события.
На одной из страниц сайта подключается компонент test:event
:
<?php $APPLICATION->IncludeComponent("test:event", "", array()); ?>
Код компонента test:event
:
<?php
class EventExample extends \CBitrixComponent {
public function executeComponent() {
if(!empty($_REQUEST["DATA"])) {
if($this->beforeSaveData()) {
/** code save data */
$this->afterSaveData();
}
}
$this->IncludeComponentTemplate();
}
protected function beforeSaveData() {
$event = new \Bitrix\Main\Event("mymodule", "OnEventExampleBeforeSave", array('arData' => $_REQUEST["DATA"]));
$event->send();
if ($event->getResults()) {
foreach ($event->getResults() as $evenResult) {
if ($evenResult->getResultType() == \Bitrix\Main\EventResult::SUCCESS) {
return true;
}
else {
$arParameters = $evenResult->getParameters();
var_dump($arParameters['errorText']);
return false;
}
}
}
}
protected function afterSaveData() {
$event = new \Bitrix\Main\Event("mymodule", "OnEventExampleAfterSave", array($value));
$event->send();
if ($event->getResults()) {
foreach ($event->getResults() as $evenResult) {
if ($evenResult->getResultType() == \Bitrix\Main\EventResult::SUCCESS) {
//Необязательно. Код для случая когда обработчик вернул успешных результат
}
else {
//Необязательно. Код для случая когда обработчик вернул неуспешный результат
}
}
}
}
}
При получении запроса с массивом DATA компонент производит сохранение полученных данных. Непосредственно перед сохранением и после сохранения данных вызываются методы beforeSave()
и afterSave()
. В обоих этих методах регистрируется событие, на которые можно добавить свои обработчики. Обработчики могут быть разными, например после сохранения полученных данных нужно так же обновить еще какие-то данные, которые с ними связаны или отправить письмо об успешном сохранении и т.д.
Важно, что если метод beforeSave()
вернет false
, то сохранение данных не произайдет, то есть с помощью своего обработчика события OnEventExampleBeforeSave
можно влиять на то будут сохранены данные или нет.
Обработчик:
<?php
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler("mymodule", "OnEventExampleBeforeSave", "CustomOnEventExampleBeforeSave");
function CustomOnEventExampleBeforeSave($event) {
$arData = $event->getParameter('arData');
if(empty($arData["name"])) {
$result = new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::ERROR, array("errorText" => "Empty name field"));
}
else {
$result = new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS);
}
return $result;
}
Внутри обработчика происходит проверка был ли передан в массиве DATA параметр name, если параметр name не был передан, то обработчик вернет ошибку.
Константы:
\Bitrix\Main\EventResult::ERROR
- обработчик вернул ошибку
\Bitrix\Main\EventResult::SUCCESS
- обработчик отработал успешно
В статье приводится пример кода для создания простого горизонтального слайдера с использованием CSS и небольшим количеством JS кода. Для реализации потребуется всего около 60 строк стилей и js кода.
В статье приведен пример как выполнить произвольный sql запрос используя стандартные средства Bitrix
grep - удобная и быстрая команда, здесь приведены примеры как произвести рекурсивный поиск в каталоге, поиск среди запущенных процессов и другие.
В статье приводится пример кода подключения bitrix без подключения шаблона сайта. Так же описано когда это может пригодится.
В статье приводится пример того как можно подключить только компонент битрикс без подключения его шаблона, чтобы можно было вызвать его метод или получить значения свойств
Статья о том как разместить свои настройки не создавая велосипеды и костыли, а используя возможности системы.