Laravel Livewire'da select2 çalışmıyor
Aug 28 2020
Resmi belgelerde belirtildiği gibi select2'yi bir seçimde uyguluyorum ve tam olarak çalışmasını sağlayamıyorum.
<div>
<div wire:ignore>
<select class="js-example-basic-single" name="state">
<option value="AL">Alabama</option>
<option value="WY">Wyoming</option>
</select>
<!-- Select2 will insert it's DOM here. -->
</div>
@push('scripts')
<script>
$(document).ready(function() { $('.js-example-basic-single').select2();
$('.js-example-basic-single').on('change', function (e) {
@this.set('foo', e.target.value);
});
});
</script>
@endpush
Görünümde aşağıdaki betiği kaldırırsam select2 bileşeni iyi işliyor
$('.js-example-basic-single').on('change', function (e) {
@this.set('foo', e.target.value);
});
ama tabii ki istediğim işlevselliği kaybediyorum.
Kullandığım selct2 add linkleri aşağıdaki gibidir
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="{{asset('SitioWeb/assets/select2/js/select2.min.js')}}"></script>
Neyi kaçırıyorum?
Yanıtlar
Abdulmajeed Oct 17 2020 at 08:45
Bootstrap-select'i kullanabilirsiniz
npm yükleme önyükleme-seçme
Benim için iyi çalıştı. bu benim kodum.
<div class="form-group">
<label for="permissions">{{ __('role.permissions') }}</label>
<div class="col-sm-10">
<div wire:key="UNIQUE_KEY">
<div wire:ignore>
<select id="permissions" wire:model="permissions"
data-live-search="true"
data-actions-box="true"
title="{{__('generic.select')}} {{ __('role.permissions') }}"
name="permissions[]" data-width="100%"
class="selectpicker permissions" multiple>
@foreach($list_permission as $permission)
<option value="{{ $permission->id }}" data-subtext="{{ $permission->key }} {{ ' -'. $permission->table_name }}"> {{ __('permission.'.$permission->key) }}
</option>
@endforeach
</select>
</div>
</div>
@error('permissions') <span class="text-danger">{{ $message }}</span> @enderror
</div>
</div>
komut dosyasında:
....
@push('scripts')
<script>
Livewire.restart();
$(function () {
$('.permissions').selectpicker();
});
</script>
@endpush
</div>
Bileşende
public $permissions = [];
public $old_permissions = []; public function updatedPermissions() { $filter_arrays = array_filter($this->permissions); $unique = array_unique($filter_arrays); $this->permissions = $unique;
}
güncellemede:
if (! empty($this->old_permissions)){
$updateRole = $this->role->find($this->modelId)->permissions()->detach(); $updateRole = $this->role->find($this->modelId)->permissions()->sync($validatedData['permissions']); }elseif ($this->old_permissions != $this->permissions ){ $updateRole = $this->role->find($this->modelId)->permissions()->attach($validatedData['permissions']);
}
ersen Nov 17 2020 at 16:37
Livewire'ı select2 ile birleştirmek için çok uğraştım ve sonunda çözümü bu şekilde buldum.
UsersComponent.php
class Users extends Component
{
public $users = []; public function mount() { $this->users= User::all();
}
public function render()
{
return view('livewire.users');
}
}
sonra
users.blade.php
<div class="col-sm-12 col-xl-3 m-b-30" wire:ignore >
<div >
<h4 class="sub-title" >USERS</h4>
<select class="js-example-basic-single form-control-warning" name="states" >
@foreach ($users as $user)
<option value="{{ $user->id }}">{{ $user->name}}</option>
@endforeach
</select>
</div>
</div>
index.blade.php
<p>
@livewire(livewire.users)
</p>
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'