Change Password Action: in the Edit Page, and in the Table

Change Password Action: in the Edit Page, and in the Table

2024-11-24 وقت القراءه : 1 دقائق

لإضافة الحقول لعملية تعديل البيانات، فإنه يجب الذهاب إلى UserResource إلى الدالة form ونقوم بتحديد الحقول التي نريد القيام بعملية التعديل عليها

public static function form(Form $form): Form
{
    return $form
        ->schema([
            Forms\Components\TextInput::make('name')
                ->required(),
            Forms\Components\TextInput::make('email')
                ->email()
                ->unique()
                ->required(),
        ]);
}

كما نلاحظ أننا لمن نقم بتحديد حقل password وذلك لأننا هنا نريد أن نتعامل معها بشكل منفرد من خلال إظهار popu 

<?php
namespace App\Filament\Resources\UserResource\Pages;

use App\Filament\Resources\UserResource;
use Filament\Actions;
use Filament\Forms\Components\TextInput;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\EditRecord;
use Illuminate\Support\Facades\Hash;


class EditUser extends EditRecord
{
    protected static string $resource = UserResource::class;

    protected function getHeaderActions(): array
    {
        return [
            Actions\Action::make('changePassword')
            ->form([
                TextInput::make('new_password')
                    ->password()
                    ->label('New Password')
                    ->required()
                    ->rule('required|string|min:8|confirmed'), // Define the rules directly here
                TextInput::make('new_password_confirmation')
                    ->password()
                    ->label('Confirm Password')
                    ->required()
                    ->same('new_password')
            ])
            ->action(function (array $data): void {
                $this->record->update([
                    'password' => Hash::make($data['new_password']),
                ]);
                Notification::make()
                    ->title('Success')
                    ->body('Password Updated Successfully')
                    ->success()
                    ->send();
            })
        ];
    }
}


الأن لو ذهبنا لصفحة تعديل مستخدم معين سنرى أنه سيظهر لدينا button لتعديل كلمة المرور

وعند الضغط عليه ستظهر لنا popup



إضافة تعليق
Loading...