| Цитата |
|---|
| sales@it-openspace.ru написал: Ранее был так оформлен код <?php AddEventHandler("tasks", "OnTaskAdd",array("AddAuditors","AudHandler")); class AddAuditors { function AudHandler($ID, $arFields) { CModule::IncludeModule('tasks'); if(!isset($arFields["AUDITORS"])) { $arFields["AUDITORS"] = []; } $arFields["AUDITORS"][] = '664'; $res= ["AUDITORS" => $arFields["AUDITORS"]]; $obTask = new CTasks; $success = $obTask->Update($ID, $res); } } Однако после обновления до php 8.1 сие поделие перестало работать. Если кто использует какие варианты для автоматического добавления в наблюдателей, поделитесь |
нужно конкретизировать function как public static function
| Код |
|---|
<?php
AddEventHandler("tasks", "OnTaskAdd",array("AddAuditors","AudHandler"));
class AddAuditors {
public static function AudHandler($ID, $arFields) {
CModule::IncludeModule('tasks');
if(!isset($arFields["AUDITORS"])) {
$arFields["AUDITORS"] = [];
}
$arFields["AUDITORS"][] = '664';
$res= ["AUDITORS" => $arFields["AUDITORS"]];
$obTask = new CTasks;
$success = $obTask->Update($ID, $res);
}
} |
и в php 8.1+ все будет работать
хотя не понятно зачем здесь вводить класс и метод. проще так:
| Код |
|---|
AddEventHandler("tasks", "OnTaskAdd", function ($ID, $arFields) {
CModule::IncludeModule('tasks');
if(!isset($arFields["AUDITORS"])) {
$arFields["AUDITORS"] = [];
}
$arFields["AUDITORS"][] = '777';
$res= ["AUDITORS" => $arFields["AUDITORS"]];
$obTask = new CTasks;
$success = $obTask->Update($ID, $res);
}); |
