diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityFormOverrideTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityFormOverrideTest.php new file mode 100644 index 0000000..e8510a2 --- /dev/null +++ b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityFormOverrideTest.php @@ -0,0 +1,71 @@ + 'Config entity form overrides', + 'description' => 'Tests that config overrides do not bleed through in entity forms.', + 'group' => 'Configuration', + ); + } + + /** + * Tests that overrides do not affect forms. + */ + public function testFormsWithOverrides() { + $this->drupalLogin($this->drupalCreateUser(array('access administration pages', 'administer site configuration'))); + + $overridden_name = 'Overridden label'; + + // Set up an override. + $settings['config']['config_test.dynamic.dotted.default']['label'] = (object) array( + 'value' => $overridden_name, + 'required' => TRUE, + ); + $this->writeSettings($settings); + \Drupal::configFactory()->setOverrideState(TRUE); + + // Test that everything on the form is the same, but that the override + // worked for the actual site name. + $this->drupalGet('admin/structure/config_test'); + $this->assertText($overridden_name); + + $this->drupalGet('admin/structure/config_test/manage/dotted.default'); + $elements = $this->xpath('//input[@name="label"]'); + $this->assertIdentical((string) $elements[0]['value'], 'Default'); + $this->assertNoText($overridden_name); + $edit = array( + 'label' => 'Custom label', + ); + + $this->drupalPostForm(NULL, $edit, t('Save')); + $this->drupalGet('admin/structure/config_test'); + $this->assertText($overridden_name); + $this->assertNoText($edit['label']); + + $this->drupalGet('admin/structure/config_test/manage/dotted.default'); + $elements = $this->xpath('//input[@name="label"]'); + $this->assertIdentical((string) $elements[0]['value'], $edit['label']); + } + +} diff --git a/core/modules/config/tests/config_test/config_test.routing.yml b/core/modules/config/tests/config_test/config_test.routing.yml index 4e1b22d..a78eb65 100644 --- a/core/modules/config/tests/config_test/config_test.routing.yml +++ b/core/modules/config/tests/config_test/config_test.routing.yml @@ -16,16 +16,16 @@ config_test.entity_add: config_test.entity: path: '/admin/structure/config_test/manage/{config_test}' defaults: - _content: '\Drupal\config_test\ConfigTestController::edit' - entity_type: 'config_test' + _entity_form: config_test + _title_callback: '\Drupal\config_test\ConfigTestController::editTitle' requirements: _access: 'TRUE' config_test.entity_config_test_no_status: path: '/admin/structure/config_test/manage/{config_test_no_status}' defaults: - _content: '\Drupal\config_test\ConfigTestController::edit' - entity_type: 'config_test_no_status' + _entity_form: config_test_no_status + _title_callback: '\Drupal\config_test\ConfigTestController::editTitle' requirements: _access: 'TRUE' diff --git a/core/modules/config/tests/config_test/lib/Drupal/config_test/ConfigTestController.php b/core/modules/config/tests/config_test/lib/Drupal/config_test/ConfigTestController.php index 836b76a..c561366 100644 --- a/core/modules/config/tests/config_test/lib/Drupal/config_test/ConfigTestController.php +++ b/core/modules/config/tests/config_test/lib/Drupal/config_test/ConfigTestController.php @@ -9,7 +9,6 @@ use Drupal\Core\Controller\ControllerBase; use Drupal\config_test\Entity\ConfigTest; -use Drupal\Component\Utility\String; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\RedirectResponse; @@ -19,7 +18,7 @@ class ConfigTestController extends ControllerBase { /** - * Presents the ConfigTest edit form. + * Route title callback. * * @param \Drupal\config_test\Entity\ConfigTest $config_test * The ConfigTest object to edit. @@ -27,10 +26,8 @@ class ConfigTestController extends ControllerBase { * @return array * A form array as expected by drupal_render(). */ - public function edit(ConfigTest $config_test) { - $form = $this->entityFormBuilder()->getForm($config_test); - $form['#title'] = String::format('Edit %label', array('%label' => $config_test->label())); - return $form; + public function editTitle(ConfigTest $config_test) { + return $this->t('Edit %label', array('%label' => $config_test->label())); } /** diff --git a/core/modules/config/tests/config_test/lib/Drupal/config_test/ConfigTestForm.php b/core/modules/config/tests/config_test/lib/Drupal/config_test/ConfigTestForm.php index 6fcc00c..8a680b2 100644 --- a/core/modules/config/tests/config_test/lib/Drupal/config_test/ConfigTestForm.php +++ b/core/modules/config/tests/config_test/lib/Drupal/config_test/ConfigTestForm.php @@ -33,6 +33,7 @@ public function form(array $form, array &$form_state) { '#required' => TRUE, '#machine_name' => array( 'exists' => 'config_test_load', + 'replace_pattern' => '[^a-z0-9_.]+', ), ); $form['weight'] = array(