fix for legacy validation

This commit is contained in:
2026-01-20 13:57:03 +01:00
parent d171eb73dc
commit 506c88a5bd
2 changed files with 35 additions and 6 deletions
+2 -1
View File
@@ -75,7 +75,8 @@ class UsersController extends BaseController
$user = $this->request->getPost();
$userID = $user['id'];
// Ensure we always have an ID, default to 0 for new user
$userID = (int)($user['id'] ?? 0);
unset($user['id']);
if ($userID == 0) {
+33 -5
View File
@@ -153,13 +153,41 @@ class Validation
public function checkUnique(): void
{
$recordID = $this->request->getPost('id');
$model = $this->validationField['model'];
$field = $this->validationField['field'];
$model = $this->validationField['model'] ?? null;
$field = $this->validationField['field'] ?? null;
// For Eloquent models, we can call the static method directly
$value = $model::checkUnique($recordID, $field, $this->fieldValue);
if (!$model || !$field) {
return; // nothing to validate against
}
if (!$value) $this->errorMessages[] = 'invoer moet uniek zijn';
// Support legacy CI3 model naming like "User_model"
if (!class_exists($model) && str_ends_with($model, '_model')) {
$model = substr($model, 0, -6); // trim suffix
}
if (!class_exists($model)) {
// Fallback: cannot validate uniqueness without a model; do not hard-fail
return;
}
// Generic Eloquent uniqueness check
try {
$query = $model::where($field, '=', $this->fieldValue);
// ignore current record on update
if (!empty($recordID)) {
$query = $query->where('id', '!=', $recordID);
}
$exists = method_exists($query, 'exists') ? $query->exists() : ($query->count() > 0);
if ($exists) {
$this->errorMessages[] = 'invoer moet uniek zijn';
}
} catch (\Throwable $e) {
// Do not crash on validation; skip unique check if model/field invalid
return;
}
}
public function checkDate(): void