Контакты
Местоположение
Россия, Калужская обл., Калуга

Наибольший вклад в теги

Все теги (6)

Лучшие ответы пользователя

Все ответы (17)
  • Как в bitrix:form реализовать множественную загрузку файлов?

    randomizex
    @randomizex
    http://resume.web-ivan.ru
    Ну если делать стандартным способом то можно сделать только много ответов типа файл. и на форме это будет отображаться отдельными полями и по отдельности цеплять в них файлы.

    В моем случае сработал такой способ:
    Насоздавал в вопросе множество ответов типа файл.
    А при выводе формы не отображаю их. Вместо этих инпутов отображаю свой с name="files"
    <input type="file" id="files" name="files[]" multiple>

    Далее подписываюсь на событие form onBeforeResultAdd
    и вручную распихиваю все файлы.
    AddEventHandler("form", "onBeforeResultAdd", ['FormResultAdd', 'before']);
    
    class FormResultAdd
    {
    
    
        /**
         * Вернет input name для ответов типа file вопроса fieldCode
         * @param $formId
         * @param string $fieldCode
         * @return array
         */
        public static function getFilesInputNames($formId, $fieldCode = 'FILES'){
            $res = [];
            if($question = \CFormField::GetBySID($fieldCode, $formId)->Fetch()){
                $by = 's_id';
                $order = 'asc';
                $filter = false;
                if(intval($question['ID'])){
                    $rsAnswers = \CFormAnswer::GetList($question['ID'], $by,$order,["FIELD_TYPE"=>'file'], $filter );
                    while ($arAnswer = $rsAnswers->Fetch())
                    {
                        $res[]='form_file_'.$arAnswer['ID'];
                    }
                }
            }
            return $res;
        }
    
        /**
         * Осуществляем загрузку множества файлов через один input type="file" multiple
         * так как стандартными средствами Битрикс можно сделать только через множество input type="file"
         * @param $WEB_FORM_ID
         * @param $arFields
         * @param $arrVALUES
         * @throws Main\SystemException
         */
        public static function loadMultiple($WEB_FORM_ID, &$arFields, &$arrVALUES) {
            global $_FILES;
            if($_FILES['files']){
                $files = [];
                if(is_array($_FILES['files']['name'])){
                    foreach ($_FILES['files'] as $key => $val){
                        foreach ($val as $k => $v){
                            $files[$k][$key]= $v;
                        }
                    }
                }else{
                    $files = [$_FILES['files']];
                }
                unset($_FILES['files']);
    
                $err = [];
                if($inputsName = self::getFilesInputNames($WEB_FORM_ID)){
                    foreach ($files as $f){
                        if($inputName = array_shift($inputsName)){
                            $_FILES[$inputName] = $f;
                        }else{
                            $err[] = $f;
                        }
                    }
    
                    if($err){
                        $firelds = [
                            'TITLE' => 'Не хватило полей в форме для подгрузки файлов '.__FUNCTION__,
                            'MESSAGE' => print_r($err, true),
                        ];
                        \CEvent::Send('DEBUG_SEND', SITE_ID, $firelds);
                    }
                }
            }
            return true;
        }
    
        public static function before($WEB_FORM_ID, &$arFields, &$arrVALUES) {
            self::loadMultiple($WEB_FORM_ID, $arFields, $arrVALUES);
        }
    
    }


    Из минусов это все таки полей должно хватать на прикрепленные файлы, если нет - лишние файлы удалятся.
    Ответ написан
    Комментировать
  • Где исправить значение mbstring.func_overload = 2 если устанавливаю 1с-bitrix на openserver?

    randomizex
    @randomizex
    http://resume.web-ivan.ru
    Дополню ответ выше. Если надо эти настройки сделать только для отдельного сайта то в настройках Апача пишем правило на конкретную папку c сайтом
    например у меня сайт в директории mybitrixutf8.loc
    сработало след правило:
    <Directory "%ssitedir%/mybitrixutf8.loc*">
      php_admin_value mbstring.func_overload 2
      php_admin_value mbstring.internal_encoding UTF-8
    </Directory>

    ну и перезагружаем сервер само собой
    Ответ написан
    Комментировать
  • Как в битриксе получить значения свойств платежной системы?

    randomizex
    @randomizex
    http://resume.web-ivan.ru
    Параметры хранятся в таблице b_sale_bizval получить их можно https://dev.1c-bitrix.ru/api_d7/bitrix/sale/busine...

    Примеры

    адрес успешной оплаты если не задан свой
    Код
    $successUrl = \Bitrix\Sale\BusinessValue::get(
    "SUCCESS_URL",
    "COMMON"
    );

    параметр "Код магазина" платежной системы с id 8 если задан свой
    Код
    $shopId = \Bitrix\Sale\BusinessValue::get(
    "SHOP_ID",
    "PAYSYSTEM_8"
    );
    Ответ написан
    Комментировать
  • Как извлечь несколько классов из html в виде сss кода в phpstorm?

    randomizex
    @randomizex
    http://resume.web-ivan.ru
    Есть плагин ECSStractor и для шторма тоже.
    Только вот пункт в консольном меню появляется только на HTML файлах и его нету в файлах php. Приходится выделять блок с HTML и копировать в временный scratch-файл (ALT+Enter ->Create new scratch file from selection)
    А из него уже вызвать (Ectract CSS)
    Ответ написан
    1 комментарий
  • В админке битрикса (bitrix) на страницах подгружаются не все скрипты и стили по причине 403?

    randomizex
    @randomizex
    http://resume.web-ivan.ru
    1) может часть файлов по протоколу https запрашиваются а у сайта протокол http?
    если .settings.php переносили и там параметр
    "https_request" => array(
          "value" => true
        )

    остался
    или В файле /bitrix/php_interface/dbconn.php насильно проставили $_SERVER["HTTPS"] = "on";
    2) может файлы лежат в папках где доступ через .htaccess закрыт?
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (16)