سید مهدی هاشمیان
2 سال پیش توسط سید مهدی هاشمیان مطرح شد
2 پاسخ

مشکل با form ها و لایوایر

سلام
مشکلی که دارم اینه که وقتی فرمی رو سابمیت میکنم و جدول آپدیت میشه، اگر صفحه رو رفرش نکنم و توی همون فرم دوباره اطلاعات وارد کنم رکورد قبلی آپدیت میشه و رکورد جدیدی ثبت نمیشه.
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>

بعد از سابمیت جدول در کامپوننت دیگه ای رفرش میشه


ثبت پرسش جدید
سجاد
@sajjadtb2 4 ماه پیش مطرح شد
0

شما بعد از اینکه اطلاعات ارسال شد می توانید فرم را خالی کنید یا اینکه از اکشن های لایوایر استفاده کنید


محمد حسینی
@lu1362 4 ماه پیش آپدیت شد
0

از طریق
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');

    }

}

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام