diff --git a/src/Tags/Concerns/RendersForms.php b/src/Tags/Concerns/RendersForms.php index f7809e616f..67cffd56fd 100644 --- a/src/Tags/Concerns/RendersForms.php +++ b/src/Tags/Concerns/RendersForms.php @@ -3,9 +3,11 @@ namespace Statamic\Tags\Concerns; use Closure; +use Illuminate\Support\HtmlString; use Illuminate\Support\MessageBag; use Statamic\Fields\Field; use Statamic\Forms\RenderableField; +use Statamic\Support\Arr; use Statamic\Support\Str; trait RendersForms @@ -167,6 +169,10 @@ protected function getRenderableField($field, $errorBag = 'default', $manipulate $data = $manipulateDataCallback($data, $field); } + if ($showField = Arr::get($data, 'show_field')) { + $data['show_field'] = new HtmlString($showField); + } + $data['field'] = new RenderableField($field, $data); return $data; diff --git a/tests/Tags/Form/FormCreateAlpineTest.php b/tests/Tags/Form/FormCreateAlpineTest.php index 194433698a..11d12bce63 100644 --- a/tests/Tags/Form/FormCreateAlpineTest.php +++ b/tests/Tags/Form/FormCreateAlpineTest.php @@ -809,6 +809,35 @@ public function it_merges_any_x_data_passed_to_the_tag() $this->assertStringContainsString($expected, $output); } + #[Test] + public function it_properly_escapes_show_field_js_in_blade() + { + $output = $this->blade(<<<'EOT' + + + + + + @if ($field['handle'] === 'message') + + @endif + + +EOT + ); + + preg_match_all('/