لفرض أنه نريد إذا تم إستخدام Voucher معين ، أي إنه تمت عمليه شراء من خلال إستخدام الكود الخاص به، أن لا تتاح عمليه التعديل عليه.
كما نلاحظ أنه جميع Vouchers تم إستخدامها، لذلك سنضيف شرط أن أي count اكبر من 0 أن لا تتاح عمليه التعديل عليه
نذهب للملف EditVoucher.php ونضيف الدالة beforeFill
class EditVoucher extends EditRecord { protected static string $resource = VoucherResource::class; protected function beforeFill() { if($this->record->payments()->exists()){ $this->redirect($this->getResource()::getUrl('index')); } } protected function getHeaderActions(): array { return [ Actions\DeleteAction::make(), ]; } }
للتوضيح
هنا نستخدم الدالة beforeFill ونضع بداخلها الشرط حيث تم تحديد هل يوجد علاقه payments على هذا العنصر ، إذا كانت موجوده اي أكثر من 0 عدد عمليات الشراء ان يتم إعاده توجيه المستخدم للصفحة الرئيسيه، أما إذا كان لا يوجد علاقه، اي لا يوجد عمليات شراء بإستخدام هذا الكود أن يتاح له التعديل.
لكن هنا ومن ناحية user ui يجب أن نظهر للمستخدم رسالة أنه لا يسمح له بالعديل على هذا العنصر
وللقيام بذلك نضيف دالة Notification إلى الدالة beforeFill
protected function beforeFill() { if($this->record->payments()->exists()){ Notification::make() ->title('Error') ->body('You cannot edit a voucher') ->danger() ->send(); $this->redirect($this->getResource()::getUrl('index')); } }
كما نلاحظ أننا قمنا بتمرير النوع وهو danger وكذلك الرسالة إلتي نريد إظهارها إلى notify