В то время как PHP-библиотека GrabzIt ориентирована на предоставление библиотеки, которую можно использовать в любом проекте PHP. Symfony PHP-проекты собираются уникальным способом, который требует немного больше работы.
Symfony — один из крупнейших PHP-фреймворков, используемых в настоящее время. Он ускоряет веб-разработку, предоставляя набор библиотек и компонентов многократного использования. Частью которого теперь является GrabzIt благодаря Торбену Лундсгаарду из ТЛАМедиа который создал пакет GrabzIt для Symfony. Это программное обеспечение с открытым исходным кодом использует MIT License.
Чтобы получить пакет GrabzIt, вы должны сначала установить его с помощью композитора.
composer require tlamedia/grabzit-bundle
Затем добавьте его в свое ядро.
public function registerBundles() { $bundles = array( //... new Tla\GrabzitBundle\TlaGrabzitBundle(), //…
Получить API ключ и секрет и добавьте их в свой конфигурационный файл следующим образом.
# config.yml tla_grabzit: key: 'Sign in to view your Application Key' secret: 'Sign in to view your Application Secret'
В бандле регистрируется несколько сервисов, которые при вызове возвращают соответствующий класс GrabzIt.
Идентификатор службы | Класс GrabzIt |
---|---|
tla_grabzit.client | GrabzItClient |
tla_grabzit.imageoptions | GrabzItImageOptions |
tla_grabzit.pdfoptions | GrabzItPDFOptions |
tla_grabzit.docxoptions | GrabzItDOCXOptions |
tla_grabzit.animationoptions | GrabzItAnimationOptions |
tla_grabzit.tableoptions | GrabzItTableOptions |
Пример того, как создать миниатюру в Symfony Framework.
namespace App\Service; use Symfony\Component\DependencyInjection\ContainerInterface as Container; class ThumbnailGenerator { private $container; public function __construct(Container $container) { $this->router = $router; $this->container = $container; } public function generateThumbnail($url) { $grabzItHandlerUrl = 'https://www.my-grabzit-thumbnail-site.com/api/thumbmail-ready'; $options = $this->container->get('tla_grabzit.imageoptions'); $options->setBrowserWidth(1366); $options->setBrowserHeight(768); $options->setFormat("png"); $options->setWidth(320); $options->setHeight(240); $options->setCustomId($domain); $grabzIt = $this->container->get('tla_grabzit.client'); $grabzIt->URLToImage($url, $options); $grabzIt->Save($grabzItHandlerUrl); try { $grabzIt->URLToImage($url, $options); $grabzIt->Save($grabzItHandlerUrl); $result = true; } catch (\Throwable $t) { $result = false; } return $result; } }
Пример того, как получать захваты от GrabzIt с помощью обработчика в фреймворке Symfony. Конечно, вам придется изменить это в соответствии с вашими требованиями.
namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; class ApiController extends Controller { public function thumbnailReadyAction(Request $request) { $id = urldecode($request->query->get('id')); $customId = $request->query->get('customid'); $thumbnailFormat = $request->query->get('format'); if ($id && $customId && $thumbnailFormat) { $grabzItApplicationKey = $this->container->getParameter('tla_grabzit.key'); if (0 === strpos($id, $grabzItApplicationKey)) { $grabzIt = $this->container->get('tla_grabzit.client'); $result = $grabzIt->GetResult($id); if ($result) { $rootPath = $this->get('kernel')->getRootDir() . '/../'; $thumbnailsPath = $rootPath . 'var/thumbnails/'; $fileName = $customId. '.' .$thumbnailFormat; file_put_contents($thumbnailsPath . $fileName, $result); } else { throw $this->createNotFoundException('GrabzIt did not return a file'); } } else { throw $this->createNotFoundException('Wrong key - Unauthorized access'); } } else { throw $this->createNotFoundException('Missing parameters'); } return new Response(null, 200); } }
Эта справочная статья была расширена из справка по этому пакету подробно описана на GitHub.