ivankff/yii2-upim
Composer 安装命令:
composer require ivankff/yii2-upim
包简介
yii2 manage images for AR without database
关键字:
README 文档
README
Application bootstrap
Yii::setAlias('@cache-image', dirname(dirname(dirname(__DIR__))) . '/alias/cache/image'); Yii::setAlias('@image', dirname(dirname(dirname(__DIR__))) . '/alias/image');
Application config
'components' => [ 'image' => [ 'class' => 'yii\image\ImageDriver', 'driver' => 'GD', //GD or Imagick ], ],
Application params
[
'images.widen' => 2000,
'images.securityKey' => 'some.security.key',
],
Active Record Entity
/** * @property-read ImagesInterface $images */ class Product extends ActiveRecord { public function behaviors() { return [ 'images' => [ 'class' => 'ivankff\yii2UploadImages\behaviors\ImagesBehavior', 'dir' => '@image/product', 'widen' => (int)ArrayHelper::getValue(Yii::$app->params, 'image.widen', 0), ], ]; } }
Backend controller
public function actions() { return [ 'delete-file' => 'ivankff\yii2UploadImages\actions\DeleteFileAction', ]; }
Backend form model
/** * @property-read string[] $uploadImagesFiles */ class ProductForm extends Model { /** @var UploadedFile */ public $uploadImages; /** * {@inheritdoc} */ public function behaviors() { return [ 'upload' => [ 'class' => 'ivankff\yii2UploadImages\behaviors\UploadBehavior', 'formAttribute' => 'uploadImages', 'initFiles' => $this->_ar->images->getAll(), ], ]; } /** * {@inheritdoc} */ public function rules() { return [ [['uploadImages_keys'], 'string'], [['uploadImages'], 'image', 'maxFiles' => 20], ]; } /** * {@inheritdoc} */ public function attributeLabels() { return [ 'uploadImages' => 'Изображения', ]; } /** * @param bool $runValidation * @return bool */ public function save($runValidation = true) { if ($runValidation && !$this->validate()) return false; $this->_ar->images->replace($this->uploadImagesFiles); return $this->_ar->save($runValidation); } }
Backend _form view
$uploadImages = []; foreach ($model->uploadImagesFiles as $i => $image) $uploadImages[] = Yii::$app->router->productThumbnailDop($model->product, $i); echo $form->field($model, 'uploadImages[]')->widget('ivankff\yii2UploadImages\FileInputWidget', [ 'options' => [ 'multiple' => true, ], 'pluginOptions' => [ 'initialPreview' => $uploadImages, 'overwriteInitial' => false, ] ]);
Router component
class Router extends Component { /** * @var string компонент-менеджер фронтенда */ public $urlManagerFrontend = 'urlManagerFrontend'; /** @var UrlManager */ private $_frontendManager; /** * @param Product $product * @param array $params * @param int $i * @return null|string */ public function productThumbnail(Product $product, int $i, $params = []) { $req = $this->_getImageRequest($params, $product->id, $i); return $this->_frontendManager->createUrl(ArrayHelper::merge( ['/catalog/product/picture', 'name' => Inflector::slug($product->title)], $req->getRequestParams() )); } /** * @param array $params * @param int $id * @param int|null $i * @return \ivankff\yii2UploadImages\ImageActionRequest * @throws */ private function _getImageRequest($params, $id, $i = null) { $params['class'] = 'ivankff\yii2UploadImages\actions\ImageActionRequest'; $params['id'] = $id; $params['i'] = $i; return Yii::createObject($params); } }
Frontend controller
public function actions() { return [ 'picture' => [ 'class' => 'ivankff\yii2UploadImages\actions\ImageAction', 'activeRecordClass' => 'common\entities\Product\Product', ], ]; }
_urlManager.php config
['pattern' => 'picture/<name>__p<id:\d+>m.jpg', 'route' => 'catalog/product/picture', 'suffix' => false, 'defaults' => ['i' => 1]], ['pattern' => 'picture/<name>__p<id:\d+>d<i:\d+>.jpg', 'route' => 'catalog/product/picture', 'suffix' => false],
ivankff/yii2-upim 适用场景与选型建议
ivankff/yii2-upim 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 171 次下载、GitHub Stars 达 0, 最近一次更新时间为 2018 年 11 月 18 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「yii2」 「yii 2」 「upload images」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 ivankff/yii2-upim 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 ivankff/yii2-upim 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 ivankff/yii2-upim 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A custom URL rule class for Yii 2 which allows to create translated URL rules
The file manager intended for using Laravel with CKEditor / TinyMCE / Colorbox
Yii2 LightBox image galary widget uses Lightbox v2.10.0 by Lokesh Dhakar
Priveate for SkeekS CMS
Laravel Media Popup to upload/view the files
C3JS Chart for Yii Framework 2.0
统计信息
- 总下载量: 171
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: BSD-3-Clause
- 更新时间: 2018-11-18