|string> */ public function rules(): array { $rules = [ 'name' => ['required', 'max:100'], 'role_id' => ['required', 'in:1,2,3,4', 'not_in:select'], 'status' => ['required', 'in:1,2', 'not_in:select'], ]; if($this->isMethod('post')){ $rules['email'] = ['required', 'email', 'max:100', 'unique:users,email']; $rules['password'] = ['required', 'confirmed', Password::min(8) ->mixedCase() ->numbers() ->symbols()]; }else if($this->isMethod('put')){ $rules['email'] = ['required', 'email', 'max:100']; $rules['password'] = ['nullable', 'confirmed', Password::min(8) ->mixedCase() ->numbers() ->symbols()]; } return $rules; } public function prepareForValidation(){ if (!filled(trim($this->password))) { $this->request->remove('password'); } } public function messages() { return [ 'name.required' => 'Nama wajib diisi.', 'name.max' => 'Nama tidak boleh lebih dari 100 karakter.', 'email.required' => 'Email wajib diisi.', 'email.email' => 'Email harus menggunakan format email yang valid.', 'email.max' => 'Email tidak boleh lebih dari 100 karakter.', 'role_id.required' => 'Role wajib dipilih.', 'role_id.in' => 'Role harus salah satu dari: Admin, Admin Monitoring, atau Admin Konten.', 'status.required' => 'Status wajib dipilih.', 'status.in' => 'Status harus salah satu dari: Aktif, atau Nonaktif.', 'password.required' => 'Password wajib diisi.', 'password.confirmed' => 'Password dan konfirmasi password tidak cocok.', 'password.min' => 'Password harus memiliki minimal 8 karakter.', 'password.mixedCase' => 'Password harus mengandung huruf besar dan huruf kecil.', 'password.numbers' => 'Password harus mengandung angka.', 'password.symbols' => 'Password harus mengandung simbol.', ]; } }