本文整理汇总了PHP中Drupal::formBuilder方法的典型用法代码示例。如果您正苦于以下问题:PHP Drupal::formBuilder方法的具体用法?PHP Drupal::formBuilder怎么用?PHP Drupal::formBuilder使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Drupal
的用法示例。
在下文中一共展示了Drupal::formBuilder方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getForm
/**
* Gets a form submitted via #ajax during an Ajax callback.
*
* This will load a form from the form cache used during Ajax operations. It
* pulls the form info from the request body.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* The current request object.
*
* @return array
* An array containing the $form and $form_state. Use the list() function
* to break these apart:
* @code
* list($form, $form_state, $form_id, $form_build_id) = $this->getForm();
* @endcode
*
* @throws Symfony\Component\HttpKernel\Exception\HttpExceptionInterface
*/
protected function getForm(Request $request)
{
$form_state = \Drupal::formBuilder()->getFormStateDefaults();
$form_build_id = $request->request->get('form_build_id');
// Get the form from the cache.
$form = form_get_cache($form_build_id, $form_state);
if (!$form) {
// If $form cannot be loaded from the cache, the form_build_id must be
// invalid, which means that someone performed a POST request onto
// system/ajax without actually viewing the concerned form in the browser.
// This is likely a hacking attempt as it never happens under normal
// circumstances.
watchdog('ajax', 'Invalid form POST data.', array(), WATCHDOG_WARNING);
throw new BadRequestHttpException();
}
// Since some of the submit handlers are run, redirects need to be disabled.
$form_state['no_redirect'] = TRUE;
// When a form is rebuilt after Ajax processing, its #build_id and #action
// should not change.
// @see \Drupal\Core\Form\FormBuilderInterface::rebuildForm()
$form_state['rebuild_info']['copy']['#build_id'] = TRUE;
$form_state['rebuild_info']['copy']['#action'] = TRUE;
// The form needs to be processed; prepare for that by setting a few internal
// variables.
$form_state['input'] = $request->request->all();
$form_id = $form['#form_id'];
return array($form, $form_state, $form_id, $form_build_id);
}
示例2: view
/**
* {@inheritdoc}
*/
public function view(OrderInterface $order, $view_mode)
{
if ($view_mode != 'customer') {
// @todo Merge OrderUpdateForm into this plugin?
return \Drupal::formBuilder()->getForm('\\Drupal\\uc_order\\Form\\OrderUpdateForm', $order);
}
}
示例3: testActionUrlBehavior
/**
* Tests form behaviour.
*/
public function testActionUrlBehavior()
{
// Create a new request which has a request uri with multiple leading
// slashes and make it the master request.
$request_stack = \Drupal::service('request_stack');
$original_request = $request_stack->pop();
$request = Request::create($original_request->getSchemeAndHttpHost() . '//example.org');
$request_stack->push($request);
$form = \Drupal::formBuilder()->getForm($this);
$markup = \Drupal::service('renderer')->renderRoot($form);
$this->setRawContent($markup);
$elements = $this->xpath('//form/@action');
$action = (string) $elements[0];
$this->assertEqual($original_request->getSchemeAndHttpHost() . '//example.org', $action);
// Create a new request which has a request uri with a single leading slash
// and make it the master request.
$request_stack = \Drupal::service('request_stack');
$original_request = $request_stack->pop();
$request = Request::create($original_request->getSchemeAndHttpHost() . '/example.org');
$request_stack->push($request);
$form = \Drupal::formBuilder()->getForm($this);
$markup = \Drupal::service('renderer')->renderRoot($form);
$this->setRawContent($markup);
$elements = $this->xpath('//form/@action');
$action = (string) $elements[0];
$this->assertEqual('/example.org', $action);
}
示例4: formBuilder
/**
* Returns the form builder.
*
* @return \Drupal\Core\Form\FormBuilderInterface
* The form builder.
*/
protected function formBuilder()
{
if (!$this->formBuilder) {
$this->formBuilder = \Drupal::formBuilder();
}
return $this->formBuilder;
}
示例5: validateElement
/**
* Form validation handler for widget elements.
*
* @param array $element
* The form element.
* @param array $form_state
* The form state.
*/
public static function validateElement(array $element, array &$form_state)
{
if ($element['#required'] && $element['#value'] == '_none') {
\Drupal::formBuilder()->setError($element, $form_state, t('!name field is required.', array('!name' => $element['#title'])));
}
// Massage submitted form values.
// Drupal\Core\Field\WidgetBase::submit() expects values as
// an array of values keyed by delta first, then by column, while our
// widgets return the opposite.
if (is_array($element['#value'])) {
$values = array_values($element['#value']);
} else {
$values = array($element['#value']);
}
// Filter out the 'none' option. Use a strict comparison, because
// 0 == 'any string'.
$index = array_search('_none', $values, TRUE);
if ($index !== FALSE) {
unset($values[$index]);
}
// Transpose selections from field => delta to delta => field.
$items = array();
foreach ($values as $value) {
$items[] = array($element['#key_column'] => $value);
}
form_set_value($element, $items, $form_state);
}
示例6: build
/**
* {@inheritdoc}
*/
public function build()
{
// Return form inside block
return $form = \Drupal::formBuilder()->getForm('Drupal\\krishna\\Form\\KrishnaForm');
// Return simple text inside block
return array('#type' => 'markup', '#markup' => $form);
}
示例7: submitFormPage
/**
* Page that triggers a programmatic form submission.
*
* Returns the validation errors triggered by the form submission as json.
*/
public function submitFormPage()
{
$form_state = new FormState();
$values = ['name' => 'robo-user', 'mail' => 'robouser@example.com', 'op' => t('Submit')];
$form_state->setValues($values);
\Drupal::formBuilder()->submitForm('\\Drupal\\user\\Form\\UserPasswordForm', $form_state);
return new JsonResponse($form_state->getErrors());
}
示例8: validateFocalPoint
/**
* {@inheritDocs}
*
* Validate callback for the focal point field.
*/
public static function validateFocalPoint($element, FormStateInterface $form_state)
{
$field_name = array_pop($element['#parents']);
$focal_point_value = $form_state->getValue($field_name);
if (!is_null($focal_point_value) && !FocalPoint::validate($focal_point_value)) {
\Drupal::formBuilder()->setError($element, $form_state, t('The !title field should be in the form "leftoffset,topoffset" where offsets are in percents. Ex: 25,75.', array('!title' => $element['#title'])));
}
}
示例9: overview
/**
* {@inheritdoc}
*/
public function overview(RouteMatchInterface $route_match, $entity_type_id = NULL)
{
$build = parent::overview($route_match, $entity_type_id);
if (\Drupal::entityManager()->getAccessControlHandler('tmgmt_job')->createAccess()) {
$build = \Drupal::formBuilder()->getForm('Drupal\\tmgmt_content\\Form\\ContentTranslateForm', $build);
}
return $build;
}
示例10: update_selection_page
/**
* Renders a form with a list of available database updates.
*/
function update_selection_page()
{
// Make sure there is no stale theme registry.
\Drupal::cache()->deleteAll();
$build = \Drupal::formBuilder()->getForm('Drupal\\Core\\Update\\Form\\UpdateScriptSelectionForm');
$build['#title'] = 'Drupal database update';
return $build;
}
示例11: build
/**
* {@inheritdoc}
*/
public function build()
{
$build = [];
$builder = \Drupal::formBuilder();
$form = $builder->getForm('\\Drupal\\dday2015\\Form\\NodeGeneratorForm');
$build['form'] = $form;
return $build;
}
示例12: itemPage
/**
* {@inheritdoc}
*/
public function itemPage(Request $request, RouteMatchInterface $route_match, $plugin_id)
{
$build = parent::itemPage($request, $route_match, $plugin_id);
if (\Drupal::entityManager()->getAccessControlHandler('tmgmt_job')->createAccess()) {
$build = \Drupal::formBuilder()->getForm('Drupal\\tmgmt_config\\Form\\ConfigTranslateForm', $build, $plugin_id);
}
return $build;
}
示例13: build
/**
* {@inheritdoc}
*/
public function build()
{
$build = [];
$build['default_block_my_text_area']['#markup'] = '<p>' . $this->configuration['my_text_area'] . '</p>';
// Add a form to block.
$build['default_block_new_form'] = \Drupal::formBuilder()->getForm('Drupal\\add_block\\Form\\NewForm');
return $build;
}
示例14: adminOverview
/**
* Returns an administrative overview of Imce Profiles.
*/
public function adminOverview(Request $request)
{
// Build the settings form first.(may redirect)
$output['settings_form'] = \Drupal::formBuilder()->getForm('Drupal\\imce\\Form\\ImceSettingsForm') + array('#weight' => 10);
// Buld profile list.
$output['profile_list'] = array('#type' => 'container', '#attributes' => array('class' => array('imce-profile-list')), 'title' => array('#markup' => '<h2>' . $this->t('Configuration Profiles') . '</h2>'), 'list' => $this->entityManager()->getListBuilder('imce_profile')->render());
return $output;
}
示例15: testFormCheckbox
function testFormCheckbox()
{
// Ensure that the checked state is determined and rendered correctly for
// tricky combinations of default and return values.
foreach (array(FALSE, NULL, TRUE, 0, '0', '', 1, '1', 'foobar', '1foobar') as $default_value) {
// Only values that can be used for array indices are supported for
// #return_value, with the exception of integer 0, which is not supported.
// @see \Drupal\Core\Render\Element\Checkbox::processCheckbox().
foreach (array('0', '', 1, '1', 'foobar', '1foobar') as $return_value) {
$form_array = \Drupal::formBuilder()->getForm('\\Drupal\\form_test\\Form\\FormTestCheckboxTypeJugglingForm', $default_value, $return_value);
$form = \Drupal::service('renderer')->renderRoot($form_array);
if ($default_value === TRUE) {
$checked = TRUE;
} elseif ($return_value === '0') {
$checked = $default_value === '0';
} elseif ($return_value === '') {
$checked = $default_value === '';
} elseif ($return_value === 1 || $return_value === '1') {
$checked = $default_value === 1 || $default_value === '1';
} elseif ($return_value === 'foobar') {
$checked = $default_value === 'foobar';
} elseif ($return_value === '1foobar') {
$checked = $default_value === '1foobar';
}
$checked_in_html = strpos($form, 'checked') !== FALSE;
$message = format_string('#default_value is %default_value #return_value is %return_value.', array('%default_value' => var_export($default_value, TRUE), '%return_value' => var_export($return_value, TRUE)));
$this->assertIdentical($checked, $checked_in_html, $message);
}
}
// Ensure that $form_state->getValues() is populated correctly for a
// checkboxes group that includes a 0-indexed array of options.
$results = json_decode($this->drupalPostForm('form-test/checkboxes-zero/1', array(), 'Save'));
$this->assertIdentical($results->checkbox_off, array(0, 0, 0), 'All three in checkbox_off are zeroes: off.');
$this->assertIdentical($results->checkbox_zero_default, array('0', 0, 0), 'The first choice is on in checkbox_zero_default');
$this->assertIdentical($results->checkbox_string_zero_default, array('0', 0, 0), 'The first choice is on in checkbox_string_zero_default');
$edit = array('checkbox_off[0]' => '0');
$results = json_decode($this->drupalPostForm('form-test/checkboxes-zero/1', $edit, 'Save'));
$this->assertIdentical($results->checkbox_off, array('0', 0, 0), 'The first choice is on in checkbox_off but the rest is not');
// Ensure that each checkbox is rendered correctly for a checkboxes group
// that includes a 0-indexed array of options.
$this->drupalPostForm('form-test/checkboxes-zero/0', array(), 'Save');
$checkboxes = $this->xpath('//input[@type="checkbox"]');
$this->assertIdentical(count($checkboxes), 9, 'Correct number of checkboxes found.');
foreach ($checkboxes as $checkbox) {
$checked = isset($checkbox['checked']);
$name = (string) $checkbox['name'];
$this->assertIdentical($checked, $name == 'checkbox_zero_default[0]' || $name == 'checkbox_string_zero_default[0]', format_string('Checkbox %name correctly checked', array('%name' => $name)));
}
$edit = array('checkbox_off[0]' => '0');
$this->drupalPostForm('form-test/checkboxes-zero/0', $edit, 'Save');
$checkboxes = $this->xpath('//input[@type="checkbox"]');
$this->assertIdentical(count($checkboxes), 9, 'Correct number of checkboxes found.');
foreach ($checkboxes as $checkbox) {
$checked = isset($checkbox['checked']);
$name = (string) $checkbox['name'];
$this->assertIdentical($checked, $name == 'checkbox_off[0]' || $name == 'checkbox_zero_default[0]' || $name == 'checkbox_string_zero_default[0]', format_string('Checkbox %name correctly checked', array('%name' => $name)));
}
}