本文整理汇总了PHP中Drupal\Core\Form\FormState::set方法的典型用法代码示例。如果您正苦于以下问题:PHP FormState::set方法的具体用法?PHP FormState::set怎么用?PHP FormState::set使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Drupal\Core\Form\FormState
的用法示例。
在下文中一共展示了FormState::set方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: buildChildFormState
/**
* Build all necessary things for child form (form state, etc.).
*
* @param \Drupal\Core\Entity\EntityFormInterface $controller
* Entity form controller for child form.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* Parent form state object.
* @param \Drupal\Core\Entity\EntityInterface $entity
* Entity object.
* @param string $operation
* Operation that is to be performed in inline form.
* @param array $parents
* Entity form #parents.
*
* @return \Drupal\Core\Form\FormStateInterface
* Child form state object.
*/
public static function buildChildFormState(EntityFormInterface $controller, FormStateInterface $form_state, EntityInterface $entity, $operation, $parents) {
$child_form_state = new FormState();
$child_form_state->addBuildInfo('callback_object', $controller);
$child_form_state->addBuildInfo('base_form_id', $controller->getBaseFormID());
$child_form_state->addBuildInfo('form_id', $controller->getFormID());
$child_form_state->addBuildInfo('args', array());
// Copy values to child form.
$child_form_state->setCompleteForm($form_state->getCompleteForm());
$child_form_state->setUserInput($form_state->getUserInput());
// Filter out all submitted values that are not directly relevant for this
// IEF. Otherwise they might mess things up.
$form_state_values = $form_state->getValues();
$form_state_values = static::extractArraySequence($form_state_values, $parents);
$child_form_state->setValues($form_state_values);
$child_form_state->setStorage($form_state->getStorage());
$value = \Drupal::entityTypeManager()->getStorage('entity_form_display')->load($entity->getEntityTypeId() . '.' . $entity->bundle() . '.' . $operation);
$child_form_state->set('form_display', $value);
// Since some of the submit handlers are run, redirects need to be disabled.
$child_form_state->disableRedirect();
// When a form is rebuilt after Ajax processing, its #build_id and #action
// should not change.
// @see drupal_rebuild_form()
$rebuild_info = $child_form_state->getRebuildInfo();
$rebuild_info['copy']['#build_id'] = TRUE;
$rebuild_info['copy']['#action'] = TRUE;
$child_form_state->setRebuildInfo($rebuild_info);
$child_form_state->set('inline_entity_form', $form_state->get('inline_entity_form'));
$child_form_state->set('langcode', $entity->language()->getId());
$child_form_state->set('field', $form_state->get('field'));
$child_form_state->setTriggeringElement($form_state->getTriggeringElement());
$child_form_state->setSubmitHandlers($form_state->getSubmitHandlers());
return $child_form_state;
}
示例2: testEntityRow
/**
* Tests the entity row handler.
*/
public function testEntityRow()
{
$vocab = Vocabulary::create(['name' => $this->randomMachineName(), 'vid' => strtolower($this->randomMachineName())]);
$vocab->save();
$term = Term::create(['name' => $this->randomMachineName(), 'vid' => $vocab->id()]);
$term->save();
$view = Views::getView('test_entity_row');
$build = $view->preview();
$this->render($build);
$this->assertText($term->getName(), 'The rendered entity appears as row in the view.');
// Tests the available view mode options.
$form = array();
$form_state = new FormState();
$form_state->set('view', $view->storage);
$view->rowPlugin->buildOptionsForm($form, $form_state);
$this->assertTrue(isset($form['view_mode']['#options']['default']), 'Ensure that the default view mode is available');
}
示例3: testActionsWithoutAvailablePlugins
/**
* @covers ::actions
* @covers ::getPaymentMethodManager
*/
public function testActionsWithoutAvailablePlugins()
{
$form = [];
$form_state = new FormState();
$form_state->set('plugin_selector', $this->pluginSelector);
$this->paymentMethodManager->expects($this->atLeastOnce())->method('getDefinitions')->willReturn([]);
$method = new \ReflectionMethod($this->sut, 'actions');
$method->setAccessible(TRUE);
$actions = $method->invokeArgs($this->sut, [$form, $form_state]);
$this->assertTrue($actions['submit']['#disabled']);
}
示例4: submitForm
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state)
{
$form_values = $form_state->getValues();
$plugin_settings = $form_state->get('plugin_settings');
$field_types = $form_values['fields'];
// Remove from configuration the keys of the field types which have no
// plugin selected. We need to clear this keys from configuration first
// and then save the settings for the fields which have a plugin selected.
// If we do both writing and clearing in the same for, the values won't get
// saved.
foreach ($field_types as $field_type => $field_type_values) {
// If there is no plugin selected remove the key from config file.
if ($field_type_values['plugin']['type'] == 'hidden') {
$this->config->clear($field_type);
}
}
$this->config->save();
// For field types that have a plugin selected save the settings.
foreach ($field_types as $field_type => $field_type_values) {
if ($field_type_values['plugin']['type'] != 'hidden') {
// Get plugin settings. They lie either directly in submitted form
// values (if the whole form was submitted while some plugin settings
// were being edited), or have been persisted in $form_state.
$plugin = $this->diffBuilderManager->createInstance($field_type_values['plugin']['type']);
// Form submitted without pressing update button on plugin settings form.
if (isset($field_type_values['settings_edit_form']['settings'])) {
$settings = $field_type_values['settings_edit_form']['settings'];
} elseif (isset($plugin_settings[$field_type]['settings'])) {
$settings = $plugin_settings[$field_type]['settings'];
} else {
$settings = $plugin->defaultConfiguration();
}
// Build a FormState object and call the plugin submit handler.
$state = new FormState();
$state->setValues($settings);
$state->set('field_type', $field_type);
$plugin->submitConfigurationForm($form, $state);
}
}
drupal_set_message($this->t('Your settings have been saved.'));
}
示例5: buildChildFormState
/**
* Build all necessary things for child form (form state, etc.).
*
* @param \Drupal\Core\Entity\EntityFormInterface $controller
* Entity form controller for child form.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* Parent form state object.
* @param \Drupal\Core\Entity\EntityInterface $entity
* Entity object.
* @param string $operation
* Operation that is to be performed in inline form.
*
* @return \Drupal\Core\Form\FormStateInterface
* Child form state object.
*/
public static function buildChildFormState(EntityFormInterface $controller, FormStateInterface $form_state, EntityInterface $entity, $operation)
{
$child_form_state = new FormState();
$child_form_state->addBuildInfo('callback_object', $controller);
$child_form_state->addBuildInfo('base_form_id', $controller->getBaseFormID());
$child_form_state->addBuildInfo('form_id', $controller->getFormID());
$child_form_state->addBuildInfo('args', array());
// Copy values to child form.
$child_form_state->setUserInput($form_state->getUserInput());
$child_form_state->setValues($form_state->getValues());
$child_form_state->setStorage($form_state->getStorage());
$child_form_state->set('form_display', entity_get_form_display($entity->getEntityTypeId(), $entity->bundle(), $operation));
// Since some of the submit handlers are run, redirects need to be disabled.
$child_form_state->disableRedirect();
// When a form is rebuilt after Ajax processing, its #build_id and #action
// should not change.
// @see drupal_rebuild_form()
$rebuild_info = $child_form_state->getRebuildInfo();
$rebuild_info['copy']['#build_id'] = TRUE;
$rebuild_info['copy']['#action'] = TRUE;
$child_form_state->setRebuildInfo($rebuild_info);
$child_form_state->set('inline_entity_form', $form_state->get('inline_entity_form'));
$child_form_state->set('langcode', $entity->language()->getId());
$child_form_state->set('field', $form_state->get('field'));
$child_form_state->setTriggeringElement($form_state->getTriggeringElement());
$child_form_state->setSubmitHandlers($form_state->getSubmitHandlers());
return $child_form_state;
}
示例6: getFormState
/**
* 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;
}
示例7: testValidate
/**
* @covers ::validate
*/
public function testValidate()
{
$line_item_name_a = $this->randomMachineName();
$line_item_name_b = $this->randomMachineName();
$line_item_name_c = $this->randomMachineName();
$root_element_name = $this->randomMachineName();
$form_build = array('foo' => array('#name' => $root_element_name, '#parents' => array('foo'), 'line_items' => []));
$line_item_a = $this->getMock(PaymentLineItemInterface::class);
$line_item_b = $this->getMock(PaymentLineItemInterface::class);
$line_item_c = $this->getMock(PaymentLineItemInterface::class);
/** @var \PHPUnit_Framework_MockObject_MockObject[] $line_items */
$line_items = array($line_item_name_a => $line_item_a, $line_item_name_b => $line_item_b, $line_item_name_c => $line_item_c);
foreach ($line_items as $line_item_name => $line_item) {
$form_build['foo']['line_items'][$line_item_name] = array('plugin_form' => array('#foo' => $this->randomMachineName()));
$line_item->expects($this->atLeastOnce())->method('getName')->willReturn($line_item_name);
$line_item->expects($this->once())->method('validateConfigurationForm')->with($form_build['foo']['line_items'][$line_item_name]['plugin_form']);
$line_item->expects($this->once())->method('submitConfigurationForm')->with($form_build['foo']['line_items'][$line_item_name]['plugin_form']);
}
$form_state = new FormState();
$form_state->set('payment.element.payment_line_items_input.configured.' . $root_element_name, array_values($line_items));
$form_state->setValues(array('foo' => array('line_items' => array($line_item_name_a => array('weight' => 3), $line_item_name_b => array('weight' => 1), $line_item_name_c => array('weight' => 2)))));
$this->sut->validate($form_build['foo'], $form_state, $form_build);
$element = $this->sut;
$line_items = $element::getLineItems($form_build['foo'], $form_state);
$this->assertSame(array($line_item_b, $line_item_c, $line_item_a), $line_items);
}
示例8: testAjaxPay
/**
* @covers ::ajaxPay
*
* @dataProvider providerTestAjaxPay
*/
public function testAjaxPay($is_completed, $number_of_commands)
{
$payment = $this->getMock(PaymentInterface::class);
$result = $this->getMock(OperationResultInterface::class);
$result->expects($this->atLeastOnce())->method('isCompleted')->willReturn($is_completed);
$payment_method = $this->getMock(PaymentMethodInterface::class);
$payment_method->expects($this->any())->method('getPayment')->willReturn($payment);
$payment_method->expects($this->atLeastOnce())->method('getPaymentExecutionResult')->willReturn($result);
$plugin_selector_plugin_id = $this->randomMachineName();
$plugin_selector = $this->getMock(PluginSelectorInterface::class);
$plugin_selector->expects($this->atLeastOnce())->method('getSelectedPlugin')->willReturn($payment_method);
$form = array('foo' => array('bar' => array('#limit_allowed_plugin_ids' => [], '#name' => $this->randomMachineName(), '#plugin_selector_id' => $plugin_selector_plugin_id, '#prototype_payment' => $payment, '#required' => TRUE, 'container' => array('#id' => $this->randomMachineName(), 'payment_form' => array('pay' => array('#array_parents' => array('foo', 'bar', 'container', 'payment_form', 'pay')))))));
$form_state = new FormState();
$form_state->set('payment_reference.element.payment_reference.plugin_selector.' . $form['foo']['bar']['#name'], $plugin_selector);
$form_state->setTriggeringElement($form['foo']['bar']['container']['payment_form']['pay']);
$response = $this->sut->ajaxPay($form, $form_state);
$this->assertInstanceOf(AjaxResponse::class, $response);
$this->assertCount($number_of_commands, $response->getCommands());
}