Skip to content

Commit fda9d3d

Browse files
ThunderBirdsX3tshafer
authored andcommitted
Can set class attribute in array. (#521)
In case of you want to add class by condition. ``` Form::text('name', null, ['class' => [ 'form-control-, $error ? 'is-invalid' : '', ]]); ```
1 parent 6d1cceb commit fda9d3d

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

src/HtmlBuilder.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,10 @@ protected function attributeElement($key, $value)
455455
return $value ? $key : '';
456456
}
457457

458+
if (is_array($value) && $key === 'class') {
459+
return 'class="' . implode(' ', $value) . '"';
460+
}
461+
458462
if (! is_null($value)) {
459463
return $key . '="' . e($value, false) . '"';
460464
}

tests/FormBuilderTest.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -792,6 +792,18 @@ public function testBooleanAttributes()
792792
$this->assertEquals('<textarea readonly name="test" cols="50" rows="10"></textarea>', $input);
793793
}
794794

795+
public function testArrayClassAttributes()
796+
{
797+
$input = $this->formBuilder->text('test', null, ['class' => ['class-a', 'class-b']]);
798+
$this->assertEquals('<input class="class-a class-b" name="test" type="text">', $input);
799+
800+
$input = $this->formBuilder->text('test', null, ['class' => [
801+
'class-a',
802+
false ? 'class-b' : 'class-c'
803+
]]);
804+
$this->assertEquals('<input class="class-a class-c" name="test" type="text">', $input);
805+
}
806+
795807
protected function setModel(array $data, $object = true)
796808
{
797809
if ($object) {

tests/HtmlBuilderTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,4 +151,18 @@ public function testBooleanAttributes()
151151

152152
$this->assertEquals('', trim($result2));
153153
}
154+
155+
public function testArrayClassAttributes()
156+
{
157+
$result = $this->htmlBuilder->attributes(['class' => ['class-a', 'class-b']]);
158+
159+
$this->assertEquals('class="class-a class-b"', trim($result));
160+
161+
$result = $this->htmlBuilder->attributes(['class' => [
162+
'class-a',
163+
false ? 'class-b' : 'class-c'
164+
]]);
165+
166+
$this->assertEquals('class="class-a class-c"', trim($result));
167+
}
154168
}

0 commit comments

Comments
 (0)