|
1 | 1 | <?php
|
2 | 2 | namespace Ajax\php\ubiquity;
|
3 | 3 |
|
| 4 | +use Ajax\semantic\components\validation\Rule; |
4 | 5 | use Ubiquity\controllers\Startup;
|
5 | 6 | use Ubiquity\utils\http\URequest;
|
6 | 7 | use Ubiquity\security\csp\ContentSecurityManager;
|
| 8 | +use Ubiquity\utils\http\UResponse; |
7 | 9 |
|
8 | 10 | class JsUtils extends \Ajax\JsUtils {
|
9 | 11 |
|
@@ -145,4 +147,32 @@ public static function diBootstrap($controller, $options = [
|
145 | 147 | $jquery->setAjaxLoader("<div class=\"d-flex justify-content-center\"><div class=\"spinner-border\" role=\"status\"><span class=\"sr-only\">Loading...</span></div></div>");
|
146 | 148 | return $jquery;
|
147 | 149 | }
|
| 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 | + } |
148 | 178 | }
|
0 commit comments