在Laravel 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”,而是实际错误。 此外,认语句甚至都不应正常执行...那么这里出了什么问题?

现在变得有趣了:我试图直接从指令中回显$ 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

...而不使用指令

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...