Morteza Khodarahmi
2 سال پیش توسط Morteza Khodarahmi مطرح شد
7 پاسخ

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

سلام دوستان
وقتی از 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


ثبت پرسش جدید
امیر حسین شکوهی
تخصص : web developer
@amirshokoohi 2 سال پیش مطرح شد
0

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


امین محمدزاده
تخصص : برنامه نویسی وب - Laravel
@amin.webdesign 2 سال پیش مطرح شد
0

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


Morteza Khodarahmi
تخصص : Backend Developer
@mrkhodarahmii 2 سال پیش مطرح شد
0

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


Morteza Khodarahmi
تخصص : Backend Developer
@mrkhodarahmii 2 سال پیش آپدیت شد
0

@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>

امین محمدزاده
تخصص : برنامه نویسی وب - Laravel
@amin.webdesign 2 سال پیش مطرح شد
0

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

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

Morteza Khodarahmi
تخصص : Backend Developer
@mrkhodarahmii 2 سال پیش مطرح شد
0

@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 1 سال پیش مطرح شد
0

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


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

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