Skip to content

Commit 6cb272c

Browse files
committed
Merge branch '6.4' into 7.0
* 6.4: [VarExporter] Uniform unitialized property error message under ghost and non-ghost objects [AssetMapper] Ignore comment lines in JavaScriptImportPathCompiler Update configuration path in help message [Validator] Review Albanian translation [Process] Fix Inconsistent Exit Status in proc_get_status for PHP Versions Below 8.3 [Validator] Update Czech (cz) translation Sync translations [Mailer][Postmark][Webhook] Make allowed IPs configurable Review portuguese translations [Validator] Fix fields without constraints in `Collection` deal with fields for which no constraints have been configured [DomCrawler] [Form] Fix the exclusion of <template>
2 parents 3330a8f + f0e7ec3 commit 6cb272c

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

Form.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -418,14 +418,14 @@ private function initialize(): void
418418
// corresponding elements are either descendants or have a matching HTML5 form attribute
419419
$formId = Crawler::xpathLiteral($this->node->getAttribute('id'));
420420

421-
$fieldNodes = $xpath->query(sprintf('( descendant::input[@form=%s] | descendant::button[@form=%1$s] | descendant::textarea[@form=%1$s] | descendant::select[@form=%1$s] | //form[@id=%1$s]//input[not(@form)] | //form[@id=%1$s]//button[not(@form)] | //form[@id=%1$s]//textarea[not(@form)] | //form[@id=%1$s]//select[not(@form)] )[not(ancestor::template)]', $formId));
421+
$fieldNodes = $xpath->query(sprintf('( descendant::input[@form=%s] | descendant::button[@form=%1$s] | descendant::textarea[@form=%1$s] | descendant::select[@form=%1$s] | //form[@id=%1$s]//input[not(@form)] | //form[@id=%1$s]//button[not(@form)] | //form[@id=%1$s]//textarea[not(@form)] | //form[@id=%1$s]//select[not(@form)] )[( not(ancestor::template) or ancestor::turbo-stream )]', $formId));
422422
foreach ($fieldNodes as $node) {
423423
$this->addField($node);
424424
}
425425
} else {
426426
// do the xpath query with $this->node as the context node, to only find descendant elements
427427
// however, descendant elements with form attribute are not part of this form
428-
$fieldNodes = $xpath->query('( descendant::input[not(@form)] | descendant::button[not(@form)] | descendant::textarea[not(@form)] | descendant::select[not(@form)] )[not(ancestor::template)]', $this->node);
428+
$fieldNodes = $xpath->query('( descendant::input[not(@form)] | descendant::button[not(@form)] | descendant::textarea[not(@form)] | descendant::select[not(@form)] )[( not(ancestor::template) or ancestor::turbo-stream )]', $this->node);
429429
foreach ($fieldNodes as $node) {
430430
$this->addField($node);
431431
}

Tests/FormTest.php

+6
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,9 @@ public function testGetValues()
432432
$form = $this->createForm('<form><template><input type="text" name="foo" value="foo" /></template><input type="text" name="bar" value="bar" /><input type="submit" /></form>');
433433
$this->assertEquals(['bar' => 'bar'], $form->getValues(), '->getValues() does not include template fields');
434434
$this->assertFalse($form->has('foo'));
435+
436+
$form = $this->createForm('<turbo-stream><template><form><input type="text" name="foo[bar]" value="foo" /><input type="text" name="bar" value="bar" /><select multiple="multiple" name="baz[]"></select><input type="submit" /></form></template></turbo-stream>');
437+
$this->assertEquals(['foo[bar]' => 'foo', 'bar' => 'bar', 'baz' => []], $form->getValues(), '->getValues() returns all form field values from template field inside a turbo-stream');
435438
}
436439

437440
public function testSetValues()
@@ -486,6 +489,9 @@ public function testGetFiles()
486489
$form = $this->createForm('<form method="post"><template><input type="file" name="foo"/></template><input type="text" name="bar" value="bar"/><input type="submit"/></form>');
487490
$this->assertEquals([], $form->getFiles(), '->getFiles() does not include template file fields');
488491
$this->assertFalse($form->has('foo'));
492+
493+
$form = $this->createForm('<turbo-stream><template><form method="post"><input type="file" name="foo[bar]" /><input type="text" name="bar" value="bar" /><input type="submit" /></form></template></turbo-stream>');
494+
$this->assertEquals(['foo[bar]' => ['name' => '', 'type' => '', 'tmp_name' => '', 'error' => 4, 'size' => 0]], $form->getFiles(), '->getFiles() return files fields from template inside turbo-stream');
489495
}
490496

491497
public function testGetPhpFiles()

0 commit comments

Comments
 (0)