Блог


[ОШИБКА] Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"?

Распаковал старый архив проекта на Битрикс и словил ошибку в админке, которая появляется в инфоблоках:
Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"?

Причина:
Слишком новый PHP.

Решение:
Сделать откат версии PHP. Поставил в настройках php5.6 (был 7+) и всё заработало.




Сделать заглавные буквы в ФИО

Клиент прислал массив пользователей системы для импорта. Единственная загвоздка была в том, что ФИО все были написаны "капсом".

Примерно так:
ИВАНОВ ИВАН ИВАНОВИЧ
ПЕТРОВА МАРИЯ ПЕТРОВНА

Появилась задача привести их все в нормальный вид.

Решение:
Помогла функция mb_convert_case(); (производит смену регистра символов в строке).


<?
$fio = "ПЕТРОВА МАРИЯ ПЕТРОВНА";
$fio = mb_convert_case($fio, MB_CASE_TITLE, 'UTF-8');
echo $fio; // Петрова Мария Петровна
?>

Отсутствие Категорий в списке в "Менеджере идей" Битрикс

В сервисе "Менеджер Идей" есть один небольшой недочет, который сбивает с толку. В некоторых случаях в списке Категорий пустота, хотя категории добавлены, инфоблок категорий и блог идей настроены, все права проставлены.
  

Найдена причина и решение:
В категориях отсутствуют коды, они обязательны у папок.
Сам же Битрикс разрешает заводить Категории без кода.


[ОШИБКА] Filename out of range

Клиент закачал в папку на сервере PDF-файл с кириллицей в названии файла и получил ошибку вида:
Notice: Constant DBPersistent already defined in /var/www/project/data/www/site.rus/bitrix/php_interface/dbconn.php on line 4 Filename is out of range.

Решение:
Отредактировать .htaccess, убрав оттуда ненужные на Linux системе строчки кода.


RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME} [\xC2-\xDF][\x80-\xBF] [OR]
RewriteCond %{REQUEST_FILENAME} \xE0[\xA0-\xBF][\x80-\xBF] [OR]
RewriteCond %{REQUEST_FILENAME} [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} [OR]
RewriteCond %{REQUEST_FILENAME} \xED[\x80-\x9F][\x80-\xBF] [OR]
RewriteCond %{REQUEST_FILENAME} \xF0[\x90-\xBF][\x80-\xBF]{2} [OR]
RewriteCond %{REQUEST_FILENAME} [\xF1-\xF3][\x80-\xBF]{3} [OR]
RewriteCond %{REQUEST_FILENAME} \xF4[\x80-\x8F][\x80-\xBF]{2}
RewriteCond %{REQUEST_FILENAME} !/bitrix/virtual_file_system.php$
RewriteRule ^(.*)$ /bitrix/virtual_file_system.php [L]

Что такое PSR

PSR - PHP Standard Recommendation (Стандартные рекомендации PHP).

В двух словах - это рекомендуемые стили кодирования, своего рода правила хорошего тона.
Придерживаться их - дело каждого программиста, это просто рекомендации.

Примеры PSR:

  1. php-файл надо начинать с <?php, а не с <? (лично я использую второй вариант, и как герой популярного сериала "Кремниевая Долина" экономлю три байта кода).
  2. файл должен быть в кодировке UTF-8 без BOM
  3. для коротких echo строчек использовать <?= ?>
  4. если файл содержит только php код без html, то в конце файла следует опускать ?>
  5. файлы PHP должны использовать окончание (перевод) строки в  формате Unix LF
  6. мой любимый пункт: код должен использовать отступ в 4 пробела для каждого уровня отступа и не должен использовать табуляцию для отступа (сам я кодирую с табуляцией)

Автоматическая установка LF / CRLF при создании нового файла в VS Code

Прописываем строчку в settings.json:

LF (Linux формат):


   "files.eol": "\n",
CRLF (Windows формат):

   "files.eol": "\r\n",

Недочеты VS Code (плагин PHP Intelephense)

Решил составить список недочетов (лично для меня) плагина PHP Intelephense.

  1. Константы (объявленные в других файлах) определяет как ошибки
  2. Автоматически срезает закрывающий тег ?>  у PHP файлов.
    Примечание:
    На самом деле это нормально, что редактор убирает эту строчки, так как есть формат PSR (а именно psr-12) и PHP Intelephense его придерживается. Причина неудобства этой срезки (опять же для меня) в том, что не нашел управляющей настройки.

Добавить пагинацию в Битрикс (API)

Добавляем пагинацию к GetList. Первичный базовый код:



$res = CIBlockElement::GetList(
   array(), 
   $arFilter, 
   false, 
   array("nPageSize" => 10), 
   $arSelect);

while ($ob = $res->GetNextElement()) {
   $arFields = $ob->GetFields();
   echo '<pre>';
   print_r($arFields);
   echo '</pre>';
}


Нужно добавить два метода NavStart и NavPrint. Код с доработками:


$res = CIBlockElement::GetList(
   array(), 
   $arFilter, 
   false, 
   array("nPageSize" => 10), 
   $arSelect);

$res->NavStart(0); // разбивает результат выборки на страницы
while ($ob = $res->GetNextElement()) {
   $arFields = $ob->GetFields();
   echo '<pre>';
   print_r($arFields);
   echo '</pre>';
}
echo $res->NavPrint("Сотрудники"); // выводит ссылки для постраничной навигации


Как распаковать многотомный архив Bitrix

Иногда распаковка с помощью стандартного метода через restore.php может приводить к ошибкам.

Многие пытаются распаковать архив Битрикс вручную (например с помощью архиватора 7zip), но это не удается, так как расширения сформированные Битрикс отличаются от общепринятых.

Расширения в Битрикс:
name.tar.gz
name.tar.gz.1
name.tar.gz.2
name.tar.gz.3

Нужно:
name.tar.gz.001
name.tar.gz.002
name.tar.gz.003
name.tar.gz.003

Решение:

  1. Переименовать все файлы, начиная с первого. Расширение первого файла переименовать в gz.001
  2. Расширения последующих файлов переименовать в gz.002gz.003 и тд
  3. Использовать 7zip, нажав правую кнопку мыши на первый файл


[ОШИБКА] Three.LoaderUtils.resolveURL is not a function

Некогда рабочий скрипт подзагрузки glTF модели перестал работать. Консоль браузера говорит "Three.LoaderUtils.resolveURL is not a function".



После пары часов экспериментов нашел решение:
Заменил three.js на новую версию 134 (была ревизия 128) и всё заработало.

Установка файлового менеджера FarManager

Железо, мой сетап 2021

Терминология: Frontend, Backend, Stack, Fullstack

Обновления на канале, путь разработчика с нуля до про

Всем привет! Четвертый сезон моих видеоуроков.
Рассказываю про обновления на канале, обзор плана обучения веб-разработки.

 Донатики на https://www.donationalerts.com/r/dimosru
Телеграм-канал: https://t.me/joinchat/zVLjGsiihUU0MTFi

Побеждаю net::ERR_INCOMPLETE_CHUNKED_ENCODING

Делаем прозрачность фона в Unity

Знакомство с адаптивной версткой / media-запросы (CSS). Используем min-width и max-width.

Баг с установкой Корпортала Битрикс - видим "Карту сайта" вместо нужных рубрик

jQuery (функции отображения, Show, Hide, Toggle)

Битрикс - нельзя зайти в админку.


Дневник 101 - 120 из 302
Начало | Пред. | 4 5 6 7 8 | След. | Конец