سلام وقت بخیر
دوستان برای ثبت تاریخ در لایووایر از پکیج livewire-persian-datepicker استفاده کردم ، تاریخ به درستی و به فارسی نمایش داده میشه اما اگه بخوام از اعتبار سنجی در زمان تغییر تاریخ استفاده کنم باید @this.set('advertising.end_at', date);
که باعث میشه تاریخ میلادی بشه و اگر هم مقدار true رو قرار بدم که که اعتبار سنجی بصورت defer باشه که با رفرش صفحه به هر علتی تاریخ به میلادی تغییر میکنه
راه حل شما چیه ؟
سلام خوبی ببین قبل اینکه این متن رو بخووونی من این پکیچ رو بهت پیشنهاد میکنم
بیا از ورتا استفاده کن https://github.com/hekmatinasser/verta فقط با {{verta()}} میتونی تاریخ رو به هر شکلی نمایش و ثبت کنی حتی توی ولیدیشن هات ولی خب این راه هم هست برای شما
خب! برای حفظ تاریخ به فرمت فارسی و استفاده از اعتبارسنجی در زمان تغییر تاریخ، میتوانید از یک روش ساده استفاده کنید.
ابتدا، برای نگهداری تاریخ به صورت میلادی در پشته Livewire، میتوانید از یک متغیر دیگر استفاده کنید. به عنوان مثال، میتوانید یک متغیر با نام selectedDate
ایجاد کنید که تاریخ میلادی را نگه میدارد.
public $selectedDate;
public function updatedSelectedDate($value)
{
// اینجا میتوانید اعتبارسنجیهای لازم را انجام دهید
// و سپس تاریخ به متغیر advertising.end_at منتقل کنید
$this->advertising['end_at'] = $value;
}
حالا، در قالب livewire-persian-datepicker میتوانید از رویداد onChange
استفاده کنید تا هنگام تغییر تاریخ، مقدار selectedDate
را به روز کنید.
<livewire-persian-datepicker wire:model="selectedDate" @onChange="updatedSelectedDate($event.target.value)" />
این روش باعث میشود تا تاریخ به فارسی در لایووایر نمایش داده شده و همچنین شما میتوانید اعتبارسنجیهای لازم را بر روی selectedDate
در رویداد updatedSelectedDate
انجام دهید.
برای استفاده از اعتبارسنجی به صورت defer، میتوانید از یک متغیر دیگر استفاده کنید و تغییرات را در زمان مناسب اعمال کنید. به عنوان مثال:
public $selectedDate;
public $deferValidation = false;
public function updatedSelectedDate($value)
{
if (!$this->deferValidation) {
// اینجا میتوانید اعتبارسنجیهای لازم را انجام دهید
// و سپس تاریخ به متغیر advertising.end_at منتقل کنید
$this->advertising['end_at'] = $value;
}
}
public function save()
{
// اعتبارسنجی را در زمان ذخیرهسازی انجام دهید
$this->validate();
// کد ذخیرهسازی را اضافه کنید
}
در این روش، با استفاده از متغیر deferValidation
میتوانید کنترل کنید که آیا اعتبارسنجی در زمان تغییر تاریخ انجام شود یا خیر. وقتی که مقدار deferValidation
برابر با false
است، اعتبارسنجی انجام میشود. اما وقتی که مقدار deferValidation
برابر با true
است (به عنوان مثال، با رفرش صفحه)، اعتبارسنجی به تعویق میافتد و تاریخ به صورت میلادی تغییر میکند.
عتبارسنجی به صورت defer، مقدار deferValidation
را در هنگام ذخیرهسازی تغییر دهید و سپس اعتبارسنجی را انجام دهید.
<button wire:click="save" wire:loading.attr="disabled">
ذخیره
</button>
public function save()
{
$this->deferValidation = true;
$this->validate();
// کدهای ذخیرهسازی را اضافه کنید
$this->deferValidation = false;
}
در این روش، با فعال کردن مقدار deferValidation
به true
، اعتبارسنجی در هنگام تغییر تاریخ تعویق میافتد. سپس در هنگام ذخیرهسازی، ابتدا اعتبارسنجی را انجام داده و سپس مقدار deferValidation
را به false
تغییر داده و باعث میشود تاریخ به فارسی برگردد.
با استفاده از این روش، میتوانید تاریخ را به فرمت فارسی نمایش دهید و در عین حال از اعتبارسنجی در زمان مناسب استفاده کنید بدون آنکه تغییر تاریخ به میلادی انجام شود.
با این حال، لطفاً توجه داشته باشید که پکیج livewire-persian-datepicker ممکن است تغییرات و بهروزرسانیهای خود را داشته باشد. لطفاً مستندات مربوط به نسخه فعلی این پکیج را بررسی کنید و مطمئن شوید که روشهایی که در آن ذکر شده استفاده میکنید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟