Issue #2569897 by swentel, Les Lim, mbaynton, yched, xjm: Required Long Text With Summary + form rebuild = PHP fatal error

8.0.x
Alex Pott 2015-09-26 16:50:14 +02:00
parent f8e139ce68
commit d59b87995e
3 changed files with 69 additions and 2 deletions

View File

@ -22,7 +22,7 @@ class StringFieldTest extends WebTestBase {
*
* @var array
*/
public static $modules = array('entity_test');
public static $modules = array('entity_test', 'file');
/**
* A user without any special permissions.

View File

@ -92,7 +92,15 @@ class TextareaWithSummaryWidget extends TextareaWidget {
*/
public function errorElement(array $element, ConstraintViolationInterface $violation, array $form, FormStateInterface $form_state) {
$element = parent::errorElement($element, $violation, $form, $form_state);
return ($element === FALSE) ? FALSE : $element[$violation->arrayPropertyPath[0]];
if ($element === FALSE) {
return FALSE;
}
elseif (isset($violation->arrayPropertyPath[0])) {
return $element[$violation->arrayPropertyPath[0]];
}
else {
return $element;
}
}
}

View File

@ -67,6 +67,65 @@ class TextFieldTest extends StringFieldTest {
}
}
/**
* Test required long text with file upload.
*/
function testRequiredLongTextWithFileUpload() {
// Create a text field.
$text_field_name = 'text_long';
$field_storage = entity_create('field_storage_config', array(
'field_name' => $text_field_name,
'entity_type' => 'entity_test',
'type' => 'text_with_summary',
));
$field_storage->save();
entity_create('field_config', array(
'field_storage' => $field_storage,
'bundle' => 'entity_test',
'label' => $this->randomMachineName() . '_label',
'required' => TRUE,
))->save();
// Create a file field.
$file_field_name = 'file_field';
$field_storage = entity_create('field_storage_config', array(
'field_name' => $file_field_name,
'entity_type' => 'entity_test',
'type' => 'file'
));
$field_storage->save();
entity_create('field_config', array(
'field_storage' => $field_storage,
'bundle' => 'entity_test',
'label' => $this->randomMachineName() . '_label',
))->save();
entity_get_form_display('entity_test', 'entity_test', 'default')
->setComponent($text_field_name, array(
'type' => 'text_textarea_with_summary',
))
->setComponent($file_field_name, array(
'type' => 'file_generic',
))
->save();
entity_get_display('entity_test', 'entity_test', 'full')
->setComponent($text_field_name)
->setComponent($file_field_name)
->save();
$test_file = current($this->drupalGetTestFiles('text'));
$edit['files[file_field_0]'] = drupal_realpath($test_file->uri);
$this->drupalPostForm('entity_test/add', $edit, 'Upload');
$this->assertResponse(200);
$edit = array(
'text_long[0][value]' => 'Long text'
);
$this->drupalPostForm(NULL, $edit, 'Save');
$this->assertResponse(200);
$this->drupalGet('entity_test/1');
$this->assertText('Long text');
}
/**
* Test widgets.
*/