Skip to content

Commit

Permalink
MVC - Phalcon 5 migration and options to lose dependency of phalcon v…
Browse files Browse the repository at this point in the history
…alidation classes. part duex

Although our previous strategy should work according to how bind() and validation() are being implemented (https://github.com/phalcon/cphalcon/blob/4.2.x/phalcon/Validation.zep),
in reality it seems they aren't the same. Our previous attempt failed some validations (such as booleans) for no valid reasons.

Long term we should remove the phalcon dependency as these effects are highly unpredictable.
  • Loading branch information
AdSchellevis committed Apr 15, 2022
1 parent e23de4c commit c67ca3f
Showing 1 changed file with 11 additions and 13 deletions.
24 changes: 11 additions & 13 deletions src/opnsense/mvc/app/models/OPNsense/Base/Validation.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ class Validation
public function __construct($validators = [])
{
$this->validators = $validators;
$this->phalcon_validation = new \Phalcon\Validation();
}

/**
Expand All @@ -58,10 +59,14 @@ public function appendMessage($message)
*/
public function add($key, $validator)
{
if (empty($this->validators[$key])){
$this->validators[$key] = [];
if (is_a($validator, "OPNsense\Base\BaseValidator")) {
if (empty($this->validators[$key])){
$this->validators[$key] = [];
}
$this->validators[$key][] = $validator;
} else {
$this->phalcon_validation->add($key, $validator);
}
$this->validators[$key][] = $validator;
return $this;
}

Expand All @@ -73,22 +78,15 @@ public function add($key, $validator)
public function validate($data)
{
$this->data = $data;
// XXX: version check
$validation = new \Phalcon\Validation();
$validation->bind($this, $data);

foreach ($data as $key => $value) {
if (!empty($this->validators[$key])) {
foreach ($this->validators[$key] as $validator) {
if (is_a($validator, "OPNsense\Base\BaseValidator")) {
$validator->validate($this, $key);
} else {
$validator->validate($validation, $key);
}
$validator->validate($this, $key);
}
}
}
$phalconMsgs = $validation->getMessages();
// XXX: temporary dual validation
$phalconMsgs = $this->phalcon_validation->validate($data);
if (!empty($phalconMsgs)) {
foreach ($phalconMsgs as $phalconMsg) {
$this->messages[] = $phalconMsg;
Expand Down

0 comments on commit c67ca3f

Please sign in to comment.