代码之家  ›  专栏  ›  技术社区  ›  gabaros

Laravel在字符串中使用自定义IF语句

  •  0
  • gabaros  · 技术社区  · 3 年前

    我定义了一个自定义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语句代码作为字符串传递,没有被编译和执行。

    谢谢

    0 回复  |  直到 3 年前