ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
form.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
6 
8 
23 function form()
24 {
25  global $DIC;
26  $factory = $DIC->ui()->factory();
27  $renderer = $DIC->ui()->renderer();
28 
29  $df = new \ILIAS\Data\Factory();
30  $refinery = $DIC['refinery'];
31 
32  $here_uri = $df->uri($DIC->http()->request()->getUri()->__toString());
33  $url_builder = new URLBuilder($here_uri);
34 
35  //when expecting a state, we do not want to render other examples
36  $example_namespace = ['prompt', 'endpoints'];
37  list($url_builder, $endpointtoken) = $url_builder->acquireParameters($example_namespace, "endpoint");
38  $url_builder = $url_builder->withParameter($endpointtoken, "true");
39 
40  //build the prompt
41  $query_namespace = ['prompt', 'example2'];
42  list($url_builder, $action_token) = $url_builder->acquireParameters($query_namespace, "action");
43  $url_builder = $url_builder->withParameter($action_token, "form");
44  $prompt = $factory->prompt()->standard($url_builder->buildURI());
45 
46  //fill the state according to (query-)parameters
47  $query = $DIC->http()->wrapper()->query();
48  if ($query->has($action_token->getName())
49  && $query->has($action_token->getName())
50  && $query->retrieve($action_token->getName(), $refinery->kindlyTo()->string()) === 'form'
51  ) {
52 
53  //setup a form.
54  $uri = $url_builder->buildURI()->__toString();
55  $form = $factory->input()->container()->form()->standard(
56  $uri,
57  [
58  $factory->input()->field()->text(
59  "Text Input",
60  "write 'close' to close the prompt."
61  )->withRequired(true)
62  ]
63  );
64 
65  //set the response
66  $response = $factory->prompt()->state()->show($form);
67 
68  $request = $DIC->http()->request();
69  if ($request->getMethod() === 'POST') {
70  $form = $form->withRequest($request);
71  $data = $form->getData();
72  if ($data !== null && reset($data) === 'close') {
77  $response = $factory->prompt()->state()->close();
78  } else {
79  $response = $factory->prompt()->state()->show($form);
80  }
81  }
82  $response = $response->withTitle('prompt form example');
83  echo($renderer->renderAsync($response));
84  exit();
85  }
86 
87  if (!$query->has($endpointtoken->getName())) {
88  $show_button = $factory->button()->standard('Show Prompt with Form', $prompt->getShowSignal());
89  return $renderer->render([$prompt, $show_button]);
90  }
91 }
form()
description: > This shows a Form being used in a Prompt.
Definition: form.php:23
$renderer
$response
Definition: xapitoken.php:90
global $DIC
Definition: shib_login.php:25
URLBuilder.
Definition: URLBuilder.php:39