I don't know what's wrong with my code because i think, i have following all the step from github krivochenko/yii2-cropper But button to cropping or delete upload doesn't work and and also the css displayed on the form is not neat like this :
i'm not see any error in console, and i want to include the code i made :
this is in view :
use budyaga\cropper\Widget;
<div class="form-group col-sm-8 col-md-8 col-lg-6">
<?= $form->field($model, 'imageFile')->widget(Widget::className(), [
'uploadUrl' => Url::toRoute($uploadPhoto['url']),
]) ?>
</div>
then this is in controller:
return $this->render('input', [
'model' => $model,
'uploadPhoto' => [
'class' => 'budyaga\cropper\actions\UploadAction',
'url' => 'content/user/create',
'path' => $this->baseApp.'/files/uploads',
]
]);
So what's wrong with this code?
My Answer:
To use the krivochenko/yii2-cropper extension to upload images in Yii2, follow these steps:
1. Install the extension using composer:
composer require krivochenko/yii2-cropper
2. Add the following code to your controller action where you want to handle the image upload:
php
use krivochenko\cropper\CropperWidget;
public function actionUpload()
{
$model = new YourModel(); // Replace YourModel with your actual model class
if (Yii::$app->request->isPost) {
$model->imageFile = UploadedFile::getInstance($model, 'imageFile');
if ($model->upload()) {
// file is uploaded successfully
return;
}
}
return $this->render('upload', [
'model' => $model,
]);
}
3. Create a view file (e.g. upload.php) to display the CropperWidget and handle the image upload form:
php
= CropperWidget::widget([
'model' => $model,
'attribute' => 'imageFile',
'cropperOptions' => [
'width' => 200,
'height' => 200,
],
]) ?>
= Html::beginForm(['controller/upload'], 'post', ['enctype' => 'multipart/form-data']) ?>
= Html::fileInput('imageFile') ?>
= Html::submitButton('Upload', ['class' => 'btn btn-primary']) ?>
= Html::endForm() ?>
4. Update your model class to handle the image upload:
php
use yii\web\UploadedFile;
public $imageFile;
public function rules()
{
return [
[['imageFile'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg'],
];
}
public function upload()
{
if ($this->validate()) {
$this->imageFile->saveAs('uploads/' . $this->imageFile->baseName . '.' . $this->imageFile->extension);
return true;
} else {
return false;
}
}
5. Make sure to create a directory named 'uploads' in your web root to store the uploaded images.
Now you should be able to use the krivochenko/yii2-cropper extension to upload images in Yii2 using the CropperWidget.
Rate this post
4 of 5 based on 9482 votesComments