powerkernel / yii-cloudinary
Yii Cloudinary 组件
dev-master
2018-08-14 19:49 UTC
Requires
- php: >=7.1.0
- cloudinary/cloudinary_php: dev-master
This package is auto-updated.
Last update: 2024-09-11 01:16:09 UTC
README
此软件包包含用于从 Cloudinary 服务上传和显示文件的组件和行为。
安装
安装此扩展的首选方式是通过 composer。
运行以下命令之一
php composer.phar require nikosid/yii2-coudinary "dev-master"
或者
"nikosid/yii2-coudinary": "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 代理到 Cloudinary 服务器。默认值为 false。
### 以下为 nginx 配置示例,用于将流量转发到 Cloudinary 服务器 ###
location /YOUR_CLOUD_NAME/ {
proxy_pass https://res.cloudinary.com;
proxy_set_header Host res.cloudinary.com;
}
CloudinaryBehavior
此行为允许您使用 ActiveRecord 行为添加文件上传逻辑。
用法
将此行为附加到您的模型类
public function behaviors() { return [ 'cloudynary' => [ 'class' => 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 [ 'cloudynary' => [ '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