admad/cakephp-glide
Composer 安装命令:
composer require admad/cakephp-glide
包简介
CakePHP plugin for using Glide image manipulation library.
README 文档
README
CakePHP plugin to help using Glide image manipulation library.
The plugin consists of a middlware, view helper and a Glide response class.
Installation
Install the plugin through composer:
composer require admad/cakephp-glide
Load the plugin using CLI:
bin/cake plugin load ADmad/Glide
Usage
Middleware
In your config/routes.php setup the GlideMiddleware for required scope which
intercepts requests and serves images generated by Glide. For e.g.:
$routes->scope('/images', function ($routes) { $routes->registerMiddleware('glide', new \ADmad\Glide\Middleware\GlideMiddleware([ // Run this middleware only for URLs starting with specified string. Default null. // Setting this option is required only if you want to setup the middleware // in Application::middleware() instead of using router's scoped middleware. // It would normally be set to same value as that of server.base_url below. 'path' => null, // Either a callable which returns an instance of League\Glide\Server // or config array to be used to create server instance. // http://glide.thephpleague.com/1.0/config/setup/ 'server' => [ // Path or League\Flysystem adapter instance to read images from. // http://glide.thephpleague.com/1.0/config/source-and-cache/ 'source' => WWW_ROOT . 'uploads', // Path or League\Flysystem adapter instance to write cached images to. 'cache' => WWW_ROOT . 'cache', // URL part to be omitted from source path. Defaults to "/images/" // http://glide.thephpleague.com/1.0/config/source-and-cache/#set-a-base-url 'base_url' => '/images/', // Response class for serving images. If unset (default) an instance of // \ADmad\Glide\Response\PsrResponseFactory() will be used. // http://glide.thephpleague.com/1.0/config/responses/ 'response' => null, ], // http://glide.thephpleague.com/1.0/config/security/ 'security' => [ // Boolean indicating whether secure URLs should be used to prevent URL // parameter manipulation. Default false. 'secureUrls' => false, // Signing key used to generate / validate URLs if `secureUrls` is `true`. // If unset value of Cake\Utility\Security::salt() will be used. 'signKey' => null, ], // Cache duration. Default '+1 days'. 'cacheTime' => '+1 days', // Any response headers you may want to set. Default null. 'headers' => [ 'X-Custom' => 'some-value', ], // Allowed query string params. If for e.g. you are only using glide presets // then you can set allowed params as `['p']` to prevent users from using // any other image manipulation params. 'allowedParams' => null ])); $routes->applyMiddleware('glide'); $routes->connect('/*'); });
For the example config shown above, for URL like domain.com/images/user/profile.jpg
the source image should be under webroot/uploads/user/profile.jpg.
Note: Make sure the image URL does not directly map to image under webroot. Otherwise as per CakePHP's default URL rewriting rules the image will be served by webserver itself and request won't reach your CakePHP app.
Exceptions
If you have enabled secure URLs and a valid token is not present in query string
the middleware will throw a ADmad\Glide\Exception\SignatureException exception.
If a response image could not be generated by the Glide library then by default
the middleware will throw a ADmad\Glide\Exception\ResponseException.
A Glide.response_failure event will also be triggered in this case. You can setup a
listener for this event and return a response instance from it. In this case
that response will be sent to client and ResponseException will not be thrown.
\Cake\Event\EventManager::instance()->on( \ADmad\Glide\Middleware\GlideMiddleware::RESPONSE_FAILURE_EVENT, function ($event) { return (new Response()) ->withFile('/path/to/default-image.jpg'); } );
Helper
The provided GlideHelper helps creating URLs and image tags for generating
images. You can load the helper in your AppView::initialize() as shown in
example below:
public function initialize(): void { // All option values should match the corresponding options for `GlideFilter`. $this->loadHelper('ADmad/Glide.Glide', [ // Base URL. 'baseUrl' => '/images/', // Whether to generate secure URLs. 'secureUrls' => false, // Signing key to use when generating secure URLs. 'signKey' => null, ]); }
Here are the available methods of GlideHelper:
/** * Creates a formatted IMG element. * * @param string $path Image path. * @param array $params Image manipulation parameters. * @param array $options Array of HTML attributes and options. * See `$options` argument of `Cake\View\HtmlHelper::image()`. * @return string Complete <img> tag. */ GlideHelper::image(string $path, array $params = [], array $options = []): string /** * URL with query string based on resizing params. * * @param string $path Image path. * @param array $params Image manipulation parameters. * @return string Image URL. */ GlideHelper::url(string $path, array $params = []): string
The main benefit of using this helper is depending on the value of secureUrls
config, the generated URLs will contain a token which will be verified by the
middleware. The prevents modification of query string params.
admad/cakephp-glide 适用场景与选型建议
admad/cakephp-glide 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 167.06k 次下载、GitHub Stars 达 34, 最近一次更新时间为 2015 年 08 月 14 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「image」 「cakephp」 「ImageMagick」 「gd」 「imagick」 「manipulation」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 admad/cakephp-glide 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 admad/cakephp-glide 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 admad/cakephp-glide 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
CakePHP 4.x AdminLTE Theme.
Imagemagick wrapper for Symfony
Yii2 LightBox image galary widget uses Lightbox v2.10.0 by Lokesh Dhakar
Stand-alone zoomify tile generator (format Zoomify) for use with OpenSeadragon, OpenLayers and various viewers.
The Yii2 extension uses jQuery jquery.carousel-1.1.min.js and makes image carousel from php array of structure defined.
Email Toolkit Plugin for CakePHP
统计信息
- 总下载量: 167.06k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 34
- 点击次数: 28
- 依赖项目数: 3
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2015-08-14