Example showing how groups can be used to attach transformation and constraints on multiple fields at once.
Note that groups do not have a defined way of outputting validations errors. This is context dependant.
8{
9
11 $ui =
$DIC->ui()->factory();
13 $renderer =
$DIC->ui()->renderer();
14 $request =
$DIC->http()->request();
15 $data = new \ILIAS\Data\Factory();
16 $refinery =
$DIC->refinery();
17
18
19 $sum = $refinery->custom()->transformation(function ($vs) {
20 list($l, $r) = $vs;
21 $s = $l + $r;
22 return $s;
23 });
24 $equal_ten = $refinery->custom()->constraint(function ($v) {
25 return $v == 10;
26 }, "The sum must equal ten.");
27
28
29 $number_input = $ui->input()->field()->numeric("number", "Put in a number.");
30
31
32
33 $group = $ui->input()->field()->group(
34 [ $number_input->withLabel("Left"), $number_input->withLabel("Right")]
35 )
36 ->withAdditionalTransformation($sum)
37 ->withAdditionalTransformation($equal_ten);
38
39
40 $form = $ui->input()->container()->form()->standard('#', ["custom_group" => $group]);
41
42
43 if ($request->getMethod() == "POST") {
44
45
46 $form = $form->withRequest($request);
47 $group = $form->getInputs()["custom_group"];
48 if ($group->getError()) {
50 } else {
51
53 }
54 } else {
56 }
57
58
59 return
60 "<pre>" . print_r(
$result,
true) .
"</pre><br/>" .
61 $renderer->render($form);
62}