Экспорт из PHP в Excel с помощью PhpSpreadsheet

В своей профессиональной деятельности я периодически сталкиваюсь с задачами экспорта/генерации данных в формате XLS/XLSX (Excel). Библиотека PhpSpreadsheet позволяет их решить.

Данная библиотека является логичным продолжением библиотеки PHPExcel, которая уже несколько лет не поддерживается.

Скачать и установить библиотеку предлагается с помощью composer:

composer require phpoffice/phpspreadsheet

Сайт: https://phpspreadsheet.readthedocs.io

Опишу реализацию типичных задач.

Читать далее

Организация универсального обработчика Ajax запросов

Этот сниппет обработчика ajax запросов я часто использую в своих проектах.

Представим себе такую задачу: необходимо реализовать CRUD (create, update, delete) операции элементов инфоблока Битрикс. При этом сами операции должны выполняться от имени такого пользователя, который:

  • авторизован на сайте
  • принадлежит определённой группе пользователей

Операции должны инициироваться POST обращением по Ajax к определённому скрипту (обработчику аякс запроса)

Читать далее

HTML в PDF средствами Dompdf

Давненько я тут не писал.

Сразу к делу: недавно столкнулся с задачей реализовать простенькую печатную форму.

На голом HTML её делать бесполезняк — можно легко столкнуться с «особенностями» браузера из которого производится печать. Собственно решил перегнать html в PDF и уже этот формат использовать в качестве печатного.

В качестве библиотеки выбрал Dompdf — она понимает стили вроде max-width и max-height и умеет работать с картинками.

Порядок действий:

  1. Собственно качаем dompdf: тык
  2. Заливаем содержимое на свой сервак.
  3. Формируем сниппет кода. Принцип прост: html-ку запихиваем в буфер вывода, а уже потом её используем в качестве содержимого PDF-ки:

Читать далее

VK API и access token

Не совсем понятно почему, но VK ввели ограничение на получение данных с публичных методов вроде wall.get и т.п.

В случае, если, к примеру, делаем запрос на получение контента стены какой-нибудь группы вк (corporationofhumor)

$url = 'https://api.vk.com/api.php?oauth=1&method=wall.get&domain=corporationofhumor&count=100';
$wall = json_decode(file_get_contents($url));
print_r( $wall );

получаем

stdClass Object
(
    [error] => stdClass Object
        (
            [error_code] => 8
            [error_msg] => Invalid request: method is unavailable without access token
            [request_params] => Array
                (
                    [0] => stdClass Object
                        (
                            [key] => oauth
                            [value] => 1
                        )

                    [1] => stdClass Object
                        (
                            [key] => method
                            [value] => wall.get
                        )

                    [2] => stdClass Object
                        (
                            [key] => domain
                            [value] => sarsar
                        )

                    [3] => stdClass Object
                        (
                            [key] => count
                            [value] => 100
                        )

                )

        )

)

Я лично решил проблему так: зарегал приложение в VK и скопировал сервисный ключ:

Читать далее