/** * @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; }