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
+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