如何在 Laravel 视图边栏中重构 Php 代码

How to refactor Php code inside a Laravel view blades

我正在尝试在 laravel blade 中编写一些代码,如下所示

@can('identical_trademark_local_show')
@php
    $trimmed_payment_id=Str::substr($Payment->payment_id,0,9);

    if($trimmed_payment_id=='AlYAFI:IL')
    {
        <a class="btn btn-xs btn-primary" href="{{ route('admin.identical-trademark-locals.show', $Payment->id) }}">
            trans('global.view')
        </a>"

    }
    if($trimmed_payment_id=='AlYAFI:SL')
    {
        <a class="btn btn-xs btn-primary" href="{{ route('admin.similarlocals.show', $Payment->id) }}">
            trans('global.view')
        </a>

    }
    if($trimmed_payment_id=='AlYAFI:SI')
    {
        <a class="btn btn-xs btn-primary" href="{{ route('admin.similarinternationals.show', $Payment->id) }}">
            trans('global.view')
        </a>
    }
@endphp
@endcan

问题是出现语法错误

syntax error, unexpected '<'

您不能在 @php 块内使用小胡子 {{ }} 符号,您需要在 @php 块外编写 HTML 代码

你最好用 blade 语法编写所有内容,其中一种方法如下:

@can('identical_trademark_local_show')
        @php
            $trimmed_payment_id=Str::substr($Payment->payment_id,0,9);
        @endphp

        @if($trimmed_payment_id=='AlYAFI:IL')
            <a class="btn btn-xs btn-primary" href="{{ route('admin.identical-trademark-locals.show', $Payment->id) }}">
                trans('global.view')
            </a>
        @endif

        @if($trimmed_payment_id=='AlYAFI:SL')
            <a class="btn btn-xs btn-primary" href="{{ route('admin.similarlocals.show', $Payment->id) }}">
                trans('global.view')
            </a>
        @endif

        @if($trimmed_payment_id=='AlYAFI:SI')
            <a class="btn btn-xs btn-primary" href="{{ route('admin.similarinternationals.show', $Payment->id) }}">
                trans('global.view')
            </a>
        @endif
@endcan

注意

您应该避免 @php 块,而是从您的控制器传递值。