سلام دوستان
وقتی از 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
میخواید همون لحظه که داده رو وارد میکنید input مورد نظر هم خودکار آپدیت بشه یا موقعی که میخواید submit کنید؟
شما از value استفاده نباید بکنید توی input چون خود wire:model خودکار مقدار دهی میکنه input رو و اینکه اگر میخواید موقع submit داده رو در بک اند بروزرسانی بکنید به جای wire:model از wire:model.defer استفاده کن. همینطور در کلاس کامپوننت هم باید متغیری با نام edit و کلید fname داشته باشید که بتونه اونرو شناسایی و بروزرسانی کنه
@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>
عرض کردم که وقتی از wire:model استفاده میکنید نیازی به value نیست و حتما هم از defer که گفتم استفاده کنید. ولی در مورد مشکلی که دارید شما از validate استفاده نکردید. در متد editHandler از validate به صورت زیر استفاده کنید اوکی میشه.
$this->validate([
'edit.fname' => 'required'
]);
@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');
}
}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟