mahyar
10 ماه پیش توسط mahyar مطرح شد
1 پاسخ

مشکل در دیت پیکر لایووایر

سلام وقت بخیر
دوستان برای ثبت تاریخ در لایووایر از پکیج livewire-persian-datepicker استفاده کردم ، تاریخ به درستی و به فارسی نمایش داده میشه اما اگه بخوام از اعتبار سنجی در زمان تغییر تاریخ استفاده کنم باید @this.set('advertising.end_at', date); که باعث میشه تاریخ میلادی بشه و اگر هم مقدار true رو قرار بدم که که اعتبار سنجی بصورت defer باشه که با رفرش صفحه به هر علتی تاریخ به میلادی تغییر میکنه
راه حل شما چیه ؟


ثبت پرسش جدید
Arshiamohammadei
تخصص : وب و هوش مصنوعی
@Arshiamohammadei 10 ماه پیش مطرح شد
0

سلام خوبی ببین قبل اینکه این متن رو بخووونی من این پکیچ رو بهت پیشنهاد میکنم
بیا از ورتا استفاده کن 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 ممکن است تغییرات و به‌روزرسانی‌های خود را داشته باشد. لطفاً مستندات مربوط به نسخه فعلی این پکیج را بررسی کنید و مطمئن شوید که روش‌هایی که در آن ذکر شده استفاده می‌کنید.


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

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