Browse Source

Add CRUD create/update form validation

master
Riyyi 3 years ago
parent
commit
aed4f15e22
  1. 4
      app/controllers/CrudController.php
  2. 24
      app/model/Model.php

4
app/controllers/CrudController.php

@ -88,7 +88,7 @@ class CrudController extends PageController {
$token = Session::validateToken($_POST);
$token && $model->fill($_POST) && $model->save()
$token && $model->fill($_POST) && $model->validate() && $model->save()
? $this->setAlertNext('success', "$modelName successfully created.")
: $this->setAlertNext('danger', "$modelName could not be created!");
@ -171,7 +171,7 @@ class CrudController extends PageController {
$token = Session::validateToken($_PUT);
$token && $model->fill($_PUT) && $model->save()
$token && $model->fill($_PUT) && $model->validate() && $model->save()
? $this->setAlertNext('success', "$modelName successfully updated.")
: $this->setAlertNext('danger', "$modelName could not be updated!");
}

24
app/model/Model.php

@ -222,8 +222,7 @@ abstract class Model {
// Set other attributes
foreach ($this->getAttributes() as $attribute) {
if (_exists($fill, $attribute) ||
(isset($fill[$attribute]) && $fill[$attribute] === '0')) {
if (isset($fill[$attribute])) {
// Escape sequences are only interpreted with double quotes!
$this->{$attribute} = preg_replace('/\r\n?/', "\n", $fill[$attribute]);
}
@ -232,6 +231,27 @@ abstract class Model {
return true;
}
public function validate(): bool
{
foreach ($this->getAttributes() as $attribute) {
$required = false;
foreach ($this->rules as $rule) {
if ($rule[0] == $attribute && $rule[2] == 1) {
$required = true;
break;
}
}
// Exit if rule is marked 'required' but empty, "0" is not empty!
if ($required && empty($this->{$attribute}) && $this->{$attribute} !== "0") {
return false;
}
}
return true;
}
public function getPrimaryKey(): string
{
return $this->primaryKey;

Loading…
Cancel
Save