سلام
مشکلی که دارم اینه که وقتی فرمی رو سابمیت میکنم و جدول آپدیت میشه، اگر صفحه رو رفرش نکنم و توی همون فرم دوباره اطلاعات وارد کنم رکورد قبلی آپدیت میشه و رکورد جدیدی ثبت نمیشه.
CreateWarehouseBox.php
<?php
namespace App\Http\Livewire\Warehouse\Basics;
use App\Models\Warehouse;
use Livewire\Component;
class CreateWarehouseBox extends Component
{
public Warehouse $warehouse;
public function mount()
{
$this->warehouse = new Warehouse();
}
protected $rules = [
'warehouse.name' => ['required', 'string', 'max:255'],
'warehouse.description' => ['max:255'],
];
public function updated($name)
{
$this->validateOnly($name);
}
public function createWarehouse()
{
$this->validate();
$this->warehouse->save();
$this->emit('refreshWarehouseBox');
$this->warehouse->name = "";
$this->warehouse->description = "";
}
public function render()
{
return view('livewire.warehouse.basics.create-warehouse-box');
}
}
create-warehouse-box.blade.php
<form wire:submit.prevent="createWarehouse">
<div class="modal-body" >
<div class="mb-1">
<input type="text" placeholder="نام انبار" class="form-control" wire:model.debounce.500ms="warehouse.name"/>
@error('warehouse.name')<span class="mt-2 text-danger">{{ $message }}</span>@enderror
</div>
<div class="mb-1">
<input type="text" placeholder="توضیحات" class="form-control" wire:model.debounce.500ms="warehouse.description"/>
@error('warehouse.description')<span class="mt-2 text-danger">{{ $message }}</span>@enderror
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">ذخیره</button>
</div>
</form>
بعد از سابمیت جدول در کامپوننت دیگه ای رفرش میشه
شما بعد از اینکه اطلاعات ارسال شد می توانید فرم را خالی کنید یا اینکه از اکشن های لایوایر استفاده کنید
از طریق
public Warehouse $warehouse;
مورد رو پیدا کردید و بعد همین رو مدام تغییر میدید که باعث میشه رکورد جدیدی ثبت نشه .
برای ثبت در دیتا بیس نیازی به اینکار نیست .اینکار رو زمانی انجام میدیم که بخوایم در دیتابیس ویرایش انجام بدیم .
این کد رو تست بفرمایید ممکنه حل بشه .
<?php
namespace App\Http\Livewire\Warehouse\Basics;
use App\Models\Warehouse;
use Livewire\Component;
class CreateWarehouseBox extends Component
{
public $description , $name ;
protected $rules = [
'warehouse.name' => ['required', 'string', 'max:255'],
'warehouse.description' => ['max:255'],
];
public function updated($name)
{
$this->validateOnly($name);
}
public function createWarehouse()
{
$this->validate();
$warehouse = new Warehouse;
$warehouse->name = $this->name;
$warehouse->description = $this->description;
$warehouse->save();
$this->emit('refreshWarehouseBox');
$this->warehouse->name = "";
$this->warehouse->description = "";
}
public function render()
{
return view('livewire.warehouse.basics.create-warehouse-box');
}
}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟