Skip to content

Commit 8fc168b

Browse files
committed
adds validation rules in Ubiquity JsUtils
1 parent 187fb81 commit 8fc168b

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

Ajax/php/ubiquity/JsUtils.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
<?php
22
namespace Ajax\php\ubiquity;
33

4+
use Ajax\semantic\components\validation\Rule;
45
use Ubiquity\controllers\Startup;
56
use Ubiquity\utils\http\URequest;
67
use Ubiquity\security\csp\ContentSecurityManager;
8+
use Ubiquity\utils\http\UResponse;
79

810
class JsUtils extends \Ajax\JsUtils {
911

@@ -145,4 +147,32 @@ public static function diBootstrap($controller, $options = [
145147
$jquery->setAjaxLoader("<div class=\"d-flex justify-content-center\"><div class=\"spinner-border\" role=\"status\"><span class=\"sr-only\">Loading...</span></div></div>");
146148
return $jquery;
147149
}
150+
151+
/**
152+
* Adds a new semantic validation ajax rule.
153+
* To use with @checkValidationRule in controllers.
154+
* @param string $ruleName
155+
* @param string $checkUrl
156+
* @param string $params
157+
* @param string $method
158+
* @return void
159+
*/
160+
public function ajaxValidationRule(string $ruleName,string $checkUrl,string $params='{_value:value}',string $method='post'): void {
161+
$this->exec(Rule::ajax($this, $ruleName, $checkUrl, $params, 'result=data.result;', $method), true);
162+
}
163+
164+
/**
165+
* Checks a validation rule declared with @ajaxValidationRule.
166+
* @param $callback a callback using the value to validate : function($value){}
167+
* @return void
168+
*/
169+
public function checkValidationRule($callback): void {
170+
if (URequest::isPost()) {
171+
$result = [];
172+
UResponse::asJSON();
173+
$value = $_POST['_value'];
174+
$result['result'] = $callback($value);
175+
echo \json_encode($result);
176+
}
177+
}
148178
}

0 commit comments

Comments
 (0)