Symfony UX Cropper + LiveComponent всегда возвращает полное изображениеPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Symfony UX Cropper + LiveComponent всегда возвращает полное изображение

Сообщение Anonymous »

Symfony UX Cropper + LiveComponent всегда возвращает полное изображение (width/height null)
Я использую Symfony UX CropperJS внутри LiveComponent, и пользовательский интерфейс обрезки работает правильно (я могу перемещать/изменять размер рамки обрезки), но при отправке обрезанное изображение всегда является полным исходным изображением.
Когда я сбрасываю объект Crop, данные обрезки содержат x = 0, y = 0, а ширина/высота равны нулю, поэтому getCroppedImage() возвращает исходное изображение вместо обрезанного.

Код: Выделить всё

LiveComponent

#[AsLiveComponent]
final class CropImage extends AbstractController
{
use DefaultActionTrait;
use ComponentWithFormTrait;

#[LiveProp]
public ?string $imageName = null;

public function instantiateForm(): FormInterface
{
$crop = $this->cropper->createCrop(
$this->imgDir.'tmp/'.$this->imageName
);
$crop->setCroppedMaxSize(600, 600);

return $this->createFormBuilder(['crop' => $crop])
->add('crop', CropperType::class, [
'public_url' => $this->assets->getUrl(
'profile_pic/tmp/'.$this->imageName
),
'cropper_options' => [
'aspectRatio' => 1,
'viewMode' => 1,
'dragMode' => 'none',
'cropBoxResizable' => false,
'zoomable' => true,
'responsive' => false,
'autoCropArea' => 0.8,
],
])
->getForm();
}

#[LiveAction]
public function cropImage()
{
$this->submitForm();

/** @var Crop $crop */
$crop = $this->getForm()->get('crop')->getData();
dd($crop); // width & height are null

$croppedImage = $crop->getCroppedImage();

file_put_contents(
$this->imgDir.'profile.jpg',
$croppedImage
);
}
}
Ветка

Код: Выделить всё

{{ form_start(form) }}


{{ form_widget(form) }}


Crop it!



{{ form_end(form) }}
Наблюдаемый результат
Сброс объекта обрезки показывает:

Код: Выделить всё

options: [
"x" => 0,
"y" => 0,
"width" => null,
"height" => null,
]
Поэтому данные обрезки из внешнего интерфейса не применяются, хотя поле обрезки настроено в пользовательском интерфейсе.
Вопрос
Как правильно подключить Symfony UX CropperJS внутри формы LiveComponent, чтобы координаты обрезки (ширина/высота) передавались правильно?
Существует ли необходимый способ визуализации формы или привязки атрибутов формы LiveComponent для правильной работы CropperType?>

Подробнее здесь: https://stackoverflow.com/questions/798 ... full-image
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»