راکت

خالی شدن input value در livewire

7 پاسخ

سلام دوستان
وقتی از livewire واسه آپدیت دیتام استفاده میکنم value یه لحظه نشون داده میشه بعد پاک میشه!!

 <div class="col-sm-12 col-md-6">
                    <label for="name">{{__('نام:')}}</label>
                    <input class="form-control" id="name" type="text" wire:model="edit.fname" value="{{$edit_user->fname}}">
                    @error('edit.fname')
                    <span class="invalid">{{$message}}</span>
                    @enderror
                </div>

لطفا کمک کنید
@hesammousavi
@ali.bayat
@juza66
@mohaligateway

ثبت پرسش جدید

پاسخ‌ها

7
امیر حسین شکوهی
امیر حسین شکوهی
@amirshokoohi

تخصص: web developer

از متد mount استفاده میکنید ؟

امین محمدزاده
امین محمدزاده
@amin.webdesign

تخصص: برنامه نویسی وب - Laravel

میخواید همون لحظه که داده رو وارد میکنید input مورد نظر هم خودکار آپدیت بشه یا موقعی که میخواید submit کنید؟
شما از value استفاده نباید بکنید توی input چون خود wire:model خودکار مقدار دهی میکنه input رو و اینکه اگر میخواید موقع submit داده رو در بک اند بروزرسانی بکنید به جای wire:model از wire:model.defer استفاده کن. همینطور در کلاس کامپوننت هم باید متغیری با نام edit و کلید fname داشته باشید که بتونه اونرو شناسایی و بروزرسانی کنه

شاید پاسخ شما همین‌جا باشد

Morteza Khodarahmi
Morteza Khodarahmi
@mrkhodarahmii

تخصص: Backend Developer

@amirshokoohi
بله از mount استفاده کردم

Morteza Khodarahmi
Morteza Khodarahmi
@mrkhodarahmii

تخصص: Backend Developer

@amin.webdesign
نه اهمیتی نداره که همون لحظه آپدیت بشه چون یه فرمه که سابمیت میشه
اگر از value استفاده نکنم پس مقدار قبلی رو چطور نمایش بدم؟
استفاده از model.defer هم کارساز نبود
لطفا یه نگاهی به اینا بندازین:

?php

namespace App\Http\Livewire\Dashboard;

use App\Models\User;
use Livewire\Component;

class EditUser extends Component
{
    public $edit_user ;
    public $edit = ['fname'=>''];

    public function mount($user)
    {
       $this->edit_user = User::find($user);
    }
    public function editHandler()
    {
        ///
    }
    public function render()
    {

        return view('livewire.dashboard.edit-user');
    }
}

اینم blade

<form class="form" wire:submit.prevent="editHandler">
            <div class="row">
                <div class="col-sm-12 col-md-6">
                    <label for="name">{{__('نام:')}}</label>
                    <input class="form-control" id="name" type="text" wire:model.defer="edit.fname" value="{{$edit_user->fname}}">
                    @error('edit.fname')
                    <span class="invalid">{{$message}}</span>
                    @enderror
                </div>
<button>submit</button>
</form>
امین محمدزاده
امین محمدزاده
@amin.webdesign

تخصص: برنامه نویسی وب - Laravel

عرض کردم که وقتی از wire:model استفاده میکنید نیازی به value نیست و حتما هم از defer که گفتم استفاده کنید. ولی در مورد مشکلی که دارید شما از validate استفاده نکردید. در متد editHandler از validate به صورت زیر استفاده کنید اوکی میشه.

$this->validate([
    'edit.fname' => 'required'
]);
Morteza Khodarahmi
Morteza Khodarahmi
@mrkhodarahmii

تخصص: Backend Developer

@amin.webdesign
ممنونم ولی این روشی که گفتین جواب نداد
من این کارو کردم و نتیجه گرفتم ازش👇👇👇

<?php

namespace App\Http\Livewire\Dashboard;

use App\Models\User;
use Livewire\Component;

class EditUser extends Component
{
    public $edit_user ;
    public $edit = ['fname'=>''];

    public function mount($user)
    {
       $this->edit_user = User::find($user);
       $this->edit['fname'] = $this->edit_user['fname']; 👈👈👈
    }
    public function editHandler()
    {
        $this->validate([
            'edit.fname' => 'required'
        ]);
        dd($this->edit['fname']);
    }
    public function render()
    {

        return view('livewire.dashboard.edit-user');
    }
}

توضیح تصویر رو وارد کنید

هادی احمدی
هادی احمدی
@hadiahmadiseven

سپاس فراوان
خیلی به من کمک کرد راهنماییتون

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

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