我定义了一个自定义IF语句:
// Custom IF statemet
Blade::if('xyz', function () {
return session()->has('xyz');
});
现在,我可以使用它根据值有条件地分配CSS类值。这只适用于常规HTML标记。
<!-- IF statement usage -->
<div class="container @xyz bordered @else colored @endxyz">
...
</div>
但是,我不能在自定义组件中以同样的方式使用它。
<!-- Try to use the IF statment on a Custom Component -->
<x-components.container class="@xyz bordered @else colored @endxyz" />
组件的定义方式如下:
<!-- Custom Component definition: components/container.blade.php -->
<div {{ @attributes->merge([ "class" -> "container" ]) }}>
{{ $slot }}
</div>
使用自定义组件时,其渲染为:
<!-- I get the php code rendered instead of the compiled one -->
<div class="container @xyz bordered @else colored @endxyz"> ... </div>
如您所见,自定义IF语句代码作为字符串传递,没有被编译和执行。
谢谢