Skip to content

Commit ac4180e

Browse files
authored
Merge pull request #1016 from jun-i-corn/feature/DefaultValueForDropDownSDT
allow setValue() for SDTs
2 parents 9653619 + 56a3a53 commit ac4180e

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

samples/Sample_34_SDT.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,16 @@
1515
$textrun = $section->addTextRun();
1616
$textrun->addText('Date: ');
1717
$textrun->addSDT('date');
18+
$textrun->addTextBreak(1);
19+
$textrun->addText('Date with pre set value: ');
20+
$textrun->addSDT('date')->setValue('03/30/2017');
21+
$textrun->addTextBreak(1);
22+
$textrun->addText('Date with pre set value: ');
23+
$textrun->addSDT('date')->setValue('30.03.2017');
1824

1925
$textrun = $section->addTextRun();
2026
$textrun->addText('Drop down list: ');
21-
$textrun->addSDT('dropDownList')->setListItems(array('1' => 'Choice 1', '2' => 'Choice 2'));
27+
$textrun->addSDT('dropDownList')->setListItems(array('1' => 'Choice 1', '2' => 'Choice 2'))->setValue('Choice 1');
2228

2329
// Save file
2430
echo write($phpWord, basename(__FILE__, '.php'), $writers);

src/PhpWord/Writer/Word2007/Element/SDT.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ public function write()
4343
$writeFormField = "write{$type}";
4444
$alias = $element->getAlias();
4545
$tag = $element->getTag();
46+
$value = $element->getValue();
47+
if ($value === null) {
48+
$value = 'Pick value';
49+
}
4650

4751
$this->startElementP();
4852

@@ -60,7 +64,7 @@ public function write()
6064
// Content
6165
$xmlWriter->startElement('w:sdtContent');
6266
$xmlWriter->startElement('w:r');
63-
$xmlWriter->writeElement('w:t', 'Pick value');
67+
$xmlWriter->writeElement('w:t', $value);
6468
$xmlWriter->endElement(); // w:r
6569
$xmlWriter->endElement(); // w:sdtContent
6670

tests/PhpWord/Writer/Word2007/ElementTest.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,17 +267,24 @@ public function testSDTElements()
267267
$phpWord = new PhpWord();
268268
$section = $phpWord->addSection();
269269

270-
$section->addSDT('comboBox');
270+
$section->addSDT('comboBox')->setListItems(array('1' => 'Choice 1', '2' => 'Choice 2'))->setValue('select value');
271271
$section->addSDT('dropDownList');
272272
$section->addSDT('date')->setAlias('date_alias')->setTag('my_tag');
273273

274274
$doc = TestHelperDOCX::getDocument($phpWord);
275275

276276
$path = '/w:document/w:body/w:p';
277277

278+
$this->assertTrue($doc->elementExists($path . '[1]/w:sdt/w:sdtContent/w:r/w:t'));
279+
$this->assertEquals('select value', $doc->getElement($path . '[1]/w:sdt/w:sdtContent/w:r/w:t')->nodeValue);
278280
$this->assertTrue($doc->elementExists($path . '[1]/w:sdt/w:sdtPr/w:comboBox'));
281+
$this->assertTrue($doc->elementExists($path . '[1]/w:sdt/w:sdtPr/w:comboBox/w:listItem'));
282+
$this->assertEquals('1', $doc->getElementAttribute($path . '[1]/w:sdt/w:sdtPr/w:comboBox/w:listItem[1]', 'w:value'));
283+
$this->assertEquals('Choice 1', $doc->getElementAttribute($path . '[1]/w:sdt/w:sdtPr/w:comboBox/w:listItem[1]', 'w:displayText'));
284+
279285
$this->assertTrue($doc->elementExists($path . '[2]/w:sdt/w:sdtPr/w:dropDownList'));
280286
$this->assertFalse($doc->elementExists($path . '[2]/w:sdt/w:sdtPr/w:alias'));
287+
281288
$this->assertTrue($doc->elementExists($path . '[3]/w:sdt/w:sdtPr/w:date'));
282289
$this->assertTrue($doc->elementExists($path . '[3]/w:sdt/w:sdtPr/w:alias'));
283290
$this->assertTrue($doc->elementExists($path . '[3]/w:sdt/w:sdtPr/w:tag'));

0 commit comments

Comments
 (0)