在 Laravel Livewire 中使用多個影像選擇

Susan Sarandon
發布: 2024-11-20 01:26:02
原創
779 人瀏覽過

在本文中,我將向您展示一個簡單的想法,當您想使用 livewire 和 laravel 來選擇更多圖像時,可以修復先前選擇的圖像丟失的問題。

我知道有多種方法可以實現這一點,但我發現在一些 livewire 生命週期鉤子的幫助下這個方法非常簡單,這些是

更新更新的掛鉤。

此螢幕截圖顯示了您的 livewire 元件類別所需的完整程式碼

Working with multiple image select in Laravel Livewire

讓我們先看看 UpdatingUpdated 鉤子的作用。接下來我會一步步解釋上面截圖中的程式碼。

更新中:

這會在 Livewire 元件資料的任何更新完成之前執行。

更新:

這將在 Livewire 元件資料的任何更新完成後運行。

程式碼解釋如下:

首先,將 WithFileUploads 特徵加入您的元件中。然後聲明以下屬性

<?php
namespace App\Http\Livewire;
use Livewire\Component;
use Livewire\WithFileUploads;

class Create extends Component {
  use WithFileUploads;
  public $images = [], $prevImages;
}
登入後複製

在您的刀片模板中,添加帶有文件類型的輸入標籤,並將模型名稱設置為圖像,如下所示:

<input type="file" wire:model="images" multiple accept="image/jpg,image/jpeg,image/png" />
登入後複製

因此,如果您嘗試選擇多個圖像,Livewire 將處理它並為您渲染圖像,您可以使用以下程式碼新增預覽:

<div>



<p>The problem with the above code is that anytime you click on the input tag to select a new set of files, the previously selected one(s) is lost during the process. Here is the quick fix I provided using two of the lifecycle hooks in Livewire.</p>

<p>The first one is the updatingImages method. See the code sample below:<br>
</p>

<pre class="brush:php;toolbar:false">public function updatingImages($value) {
    $this->prevImages = $this->images;
}
登入後複製

上面的程式碼只是在$images屬性即將開始更新時將images屬性的內容儲存在$prevImages屬性中,以防止內容遺失。

第二個是updatedImages方法。請參閱下面的程式碼範例:

public function updatedImages($value) {
    $this->images = array_merge($this->prevImages, $value);
}
登入後複製

上面的程式碼將 $prevImages 屬性的資料與新選擇的影像資料合併,然後在更新完成後將其儲存回 $images 屬性。

這是解決本文開頭所述問題最簡單的方法之一。我希望你覺得它有幫助。

感謝您的閱讀! ! !

以上是在 Laravel Livewire 中使用多個影像選擇的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板