在 laravel blade 指令中使用未定义常量

Use of undefined constant in laravel blade directive

在我的 blade 我有

@foreach($orders as $order)
<tr>
  <td align="left" valign="top" style="padding: 5px 10px; font-size: 16px; line-height: 18px;">
@identifier_prefix($order->pickup_time)
  </td>
</tr>
@endforeach

在 AppServiceProvider 中:

public function boot()
{
  Blade::directive('identifier_prefix', function ($pickup_time) {
    $prefix = '';
    switch($pickup_time){
      case '9u - 10u30':
      $prefix = 'O';
      break;
      case '10u30 - 12u':
      $prefix = 'V';
      break;
      case '12u - 14u30':
      $prefix = 'M';
      break;
      case '14u30 - 17u':
      $prefix = 'N';
      break;
      case '17u - 19u':
      $prefix = 'A';
      break;
      default:
      $prefix = 'ERROR';
      break;
    }
    return "<?php echo $prefix; ?>";
  });
}

我收到一个错误返回说

Use of undefined constant ERROR - assumed 'ERROR' (this will throw an Error in a future version of PHP)

我不是后端开发人员,所以在 php 和 blade 方面经验不多。但不明白为什么我会打印错误。甚至不是来自默认语句的字符串 'ERROR' ,而是一个实际的错误。 还有,default语句应该连正常执行都没有。。。请问这里有什么问题吗?

现在变得有趣了:我试图直接从指令中回显 $pickup_time,比如

Blade::directive('identifier_prefix', function ($pickup_time) {
    $prefix = 0;
    echo $pickup_time;
    //other code

我得到 $order->pickup_time 作为字符串返回...

这怎么可能...尝试将所有内容放入 {} 中,不带或不带回显...尝试了所有...我迷路了。

我放弃了尝试。看起来你不能在指令中使用变量,我不敢相信...... 但是对于以后遇到这个问题的其他人来说:我最后只写了就解决了:

@switch($order->pickup_time)
      @case('9u - 10u30')
        O
        @break
      @case('10u30 - 12u')
        V
        @break
      @case('12u - 14u30')
        M
        @break
      @case('14u30 - 17u')
        N
        @break
      @case('17u - 19u')
        A
        @break
      @default
          <span style="color: red;">Something went wrong</span>
  @endswitch

...并且不使用指令