Beispiel #1
0
 /**
  * @covers ::getTemporaryValue
  * @covers ::hasTemporaryValue
  * @covers ::setTemporaryValue
  */
 public function testTemporaryValue()
 {
     $form_state = new FormState();
     $this->assertFalse($form_state->hasTemporaryValue('rainbow_sparkles'));
     $form_state->setTemporaryValue('rainbow_sparkles', 'yes please');
     $this->assertSame($form_state->getTemporaryValue('rainbow_sparkles'), 'yes please');
     $this->assertTrue($form_state->hasTemporaryValue('rainbow_sparkles'), TRUE);
     $form_state->setTemporaryValue(array('rainbow_sparkles', 'magic_ponies'), 'yes please');
     $this->assertSame($form_state->getTemporaryValue(array('rainbow_sparkles', 'magic_ponies')), 'yes please');
     $this->assertTrue($form_state->hasTemporaryValue(array('rainbow_sparkles', 'magic_ponies')), TRUE);
 }
 /**
  * Get the wizard form state.
  *
  * @param \Drupal\ctools\Wizard\FormWizardInterface $wizard
  *   The form wizard.
  * @param array $parameters
  *   The array of parameters specific to this wizard.
  * @param bool $ajax
  *
  * @return \Drupal\Core\Form\FormState
  */
 public function getFormState(FormWizardInterface $wizard, array $parameters, $ajax = FALSE)
 {
     $form_state = new FormState();
     // If a wizard has no values, initialize them.
     if (!$wizard->getTempstore()->get($wizard->getMachineName())) {
         $cached_values = $wizard->initValues();
         // Save the cached values that were initialized.
         //$wizard->getTempstore()->set($wizard->getMachineName(), $cached_values);
     } else {
         $cached_values = $wizard->getTempstore()->get($wizard->getMachineName());
     }
     $form_state->setTemporaryValue('wizard', $cached_values);
     $form_state->set('ajax', $ajax);
     $parameters['form'] = [];
     $parameters['form_state'] = $form_state;
     $method = new \ReflectionMethod($wizard, 'buildForm');
     $arguments = [];
     foreach ($method->getParameters() as $parameter) {
         if (array_key_exists($parameter->name, $parameters)) {
             $arguments[] = $parameters[$parameter->name];
         } elseif ($parameter->isDefaultValueAvailable()) {
             $arguments[] = $parameter->getDefaultValue();
         }
     }
     unset($parameters['form'], $parameters['form_state']);
     // Remove $form and $form_state from the arguments, and re-index them.
     unset($arguments[0], $arguments[1]);
     $form_state->addBuildInfo('args', array_values($arguments));
     return $form_state;
 }