Использование Image Intervention с Laravel Nova - PullRequest
0 голосов
/ 22 ноября 2018

У меня работает Image Intervention, и я нажимаю на S3, но не могу сохранить имя файла в таблице.

Это то, что у меня есть:

// Use AS because Image is already a Nova facade
use Intervention\Image\Facades\Image as Cropper;

- - -

Avatar::make('Image Large')
    ->store(function (Request $request, $model) {

        // Create a UUID filename
        $fileName = $this->uuid() . '.jpg';

        // Crop with Image Intervention
        $cropped = Cropper::make($request->image_large)->fit(100, 50, function ($c) {
            $c->upsize();
        })->encode('jpg', 80);

        // Store on S3
        Storage::disk('s3_image')->put($fileName, (string) $cropped);

        // Save filename in DB
        $model->update([
            'image_large' => $fileName,
        ]);
    })
    ->rules('required')
    ->prunable(),

Все работаеткроме последней части, сохраняя имя файла.

1 Ответ

0 голосов
/ 22 ноября 2018

Я выдохся ...

Avatar::make('Image', 'image_large')
    ->store(function (Request $request, $model) {

        // Create a UUID filename
        $fileSmall = $this->uuid() . '.jpg';
        $fileLarge = $this->uuid() . '.jpg';

        // Crop with Image Intervention
        $imageSmall = Cropper::make($request->image)->fit(200, 100, function ($c) {
            $c->upsize();
        })->encode('jpg', 90);
        $imageLarge = Cropper::make($request->image)->fit(500, 300, function ($c) {
            $c->upsize();
        })->encode('jpg', 90);

        // Store on S3
        Storage::disk('s3_image')->put($fileSmall, (string) $imageSmall);
        Storage::disk('s3_image')->put($fileLarge, (string) $imageLarge);

        return [
            'image_small' => $fileSmall,
            'image_large' => $fileLarge,
        ];
    })
    ->rules('required')
    ->disk('s3_image')
    ->hideFromIndex()
    ->prunable(),
...