Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

модифицировать поля, полученные через iblock.element.add

00 голосов
7
создал файл для редактирования элемента, позволяющий модифицировать поля перед сохранением

Код
if($REQUEST_METHOD=="POST")
    {
    $_POST["ACTIVE_FROM"] = date("d.m.Y");
    $_POST["ACTIVE_TO"] = date("d.m.Y");
    $_POST["ACTIVE"] = "N";
  }


при добавлении через админку все работает, но при добавлении элемента из публичной части через iblock.element.add поля не модифицируются. как собственно можно настроить обработку полей при добавлении через iblock.element.add ?
спасибо!
спросил 24 Май, 13 от Exet (380 баллов)

7 Ответы

00 голосов
Цитата
Игорь Гладких пишет:
создал файл для редактирования элемента, позволяющий модифицировать поля перед сохранением

Этот файл работает только для админки.
Чтобы написать скрипт, который сработает в админке и публиче, используйте события Инфоблоков.
В зависимости от задачи можете модифицировать поля перед добавлением или изменением, также после добавления или изменения.
В документации рассмотрены примеры создания подобных скриптов.
ответил 24 Май, 13 от Almarea (3,760 баллов)
00 голосов
спасибо за наводку)
теперь полдня не могу правильно задать условие для изменения значения свойства ACTIVE

input type="checkbox" name="PROPERTY[99][57]" value="57"

Код
AddEventHandler("iblock", "OnBeforeIBlockElementAdd",   array("Active", "OnBeforeIBlockElementAdd")); 

class Active 
{ 
   function OnBeforeIBlockElementAdd (&$arFields) 
     { 
      if ($arFields[99][57] == "57") 
 { 
         $arFields["ACTIVE"]="Y"; 
    }  
   else
$arFields["ACTIVE"]="N";
} 
}
ответил 25 Май, 13 от Exet (380 баллов)
00 голосов
Не помню точно, надо смотреть. Но, по моему, дело в том, что вы к свойству неправильно обращаетесь.
ответил 18 Авг, 13 от Almarea (3,760 баллов)
00 голосов
ошибка именно при сравнении значения свойства
Код
if ($arFields[99][57] == "57"
только где именно, не разберусь
ответил 17 Ноя, 13 от Exet (380 баллов)
00 голосов
Не пойму что у вас за цифры 99 и 57.
ответил 25 Фев, 14 от Almarea (3,760 баллов)
00 голосов
смотрите в арфилдс
Код
  'PROPERTY_VALUES' => 
     array (
       1 => array (
         ИД_СВОЙСТВА => ЗНАЧЕНИЕ_СВОЙСТВА,
       ),
       2 => array (
         ИД_СВОЙСТВА => ЗНАЧЕНИЕ_СВОЙСТВА,
       ),
            ...
       N => array (
         ИД_СВОЙСТВА => ЗНАЧЕНИЕ_СВОЙСТВА,
       ),
  ),
ответил 17 Июнь, 14 от Almarea (3,760 баллов)
00 голосов
спасибо! нужно было
if ($arFields['PROPERTY_VALUES'][99] == 57)
ответил 16 Окт, 14 от Exet (380 баллов)

Похожие вопросы

0 голосов
10 ответов
0 голосов
2 ответов
спросил 29 Апр, 14 от Kiriel (2,010 баллов)
0 голосов
2 ответов
спросил 06 Апр, 14 от PANKELA (100 баллов)
0 голосов
3 ответов