nikosid / yii2-cloudinary
Yii2 Cloudinary 组件
dev-master
2021-12-04 07:09 UTC
Requires
- php: >=5.4.0
- cloudinary/cloudinary_php: 1.20.0
- mohorev/yii2-upload-behavior: *
- yiisoft/yii2: ~2.0.6
This package is auto-updated.
Last update: 2024-09-15 19:06:20 UTC
README
此包包含用于从 Cloudinary 服务上传和显示文件的组件和行为。
安装
安装此扩展的首选方式是通过 composer。
运行以下命令之一
php composer.phar require nikosid/yii2-cloudinary "dev-master"
或添加
"nikosid/yii2-cloudinary": "dev-master"
到您的 composer.json 文件的 require 部分。
CloudinaryComponent
您需要在应用程序配置中配置 cloudinary 组件。
'components' => [ 'cloudinary' => [ 'class' => CloudinaryComponent::class, 'cloud_name' => 'YOUR_CLOUD_NAME', 'api_key' => 'YOUR_API_KEY', 'api_secret' => 'YOUR_API_SECRET', 'cdn_subdomain' => true,//optional 'useSiteDomain' => false, ], ],
通过将 $useSiteDomain 设置为 true,您可以制作指向您的域名的 URL,并将其代理到云服务器。默认情况下为 false。
### 示例:nginx 配置用于将流量转发到云服务器 ###
location /YOUR_CLOUD_NAME/ {
proxy_pass https://res.cloudinary.com;
proxy_set_header Host res.cloudinary.com;
}
CloudinaryBehavior
此行为允许您添加具有 ActiveRecord 行为的文件上传逻辑。
用法
将行为附加到您的模型类
public function behaviors() { return [ 'cloudinary' => [ 'class' => nikosid\cloudinary\CloudinaryBehavior::class, 'attribute' => 'picture', 'publicId' => Yii::$app->name . '/articles/main{id}', 'thumbs' => [ 'large' => ['secure' => true, 'width' => 848, 'height' => 536, 'crop' => 'fill'], 'medium' => ['secure' => true, 'width' => 555, 'height' => 536, 'crop' => 'fill'], 'small' => ['secure' => true, 'width' => 130, 'height' => 125, 'crop' => 'fill'], ], ], ]; }
添加验证规则
//For file upload public function rules() { return [ ['picture', 'image', 'extensions' => 'jpg, jpeg, gif, png', 'on' => ['insert', 'update']], ]; } //Or for url type field public function rules() { return [ ['url_picture', 'url',], ]; }
用于从本地存储上传文件的示例视图文件
<?php $form = ActiveForm::begin(); ?> <?= $form->field($model, 'picture')->fileInput() ?> <div class="form-group"> <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end(); ?>
用于从 URL 上传文件的示例视图文件
<?php $form = ActiveForm::begin(); ?> <?= $form->field($model, 'url_picture')->textInput() ?> <div class="form-group"> <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end(); ?>
文件应上传良好。
您还可以获取生成的缩略图图像 URL
echo $model->getThumb('medium');
两种上传类型
您还可以指定一些属性,并按优先级排序。
public function behaviors() { return [ 'cloudinary' => [ 'class' => CloudinaryBehavior::class, 'attribute' => 'picture,picture_url', 'publicId' => Yii::$app->name . '/articles/main{id}', 'thumbs' => [ 'large' => ['secure' => true, 'width' => 848, 'height' => 536, 'crop' => 'fill'], 'medium' => ['secure' => true, 'width' => 555, 'height' => 536, 'crop' => 'fill'], 'small' => ['secure' => true, 'width' => 130, 'height' => 125, 'crop' => 'fill'], ], ], ]; }
这意味着如果用户上传 picture
,Cloudinary 会获取它,如果没有,我们还会检查 picture_url 并尝试上传它
许可证
MIT