问题描述
我有刀刃
@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
...而不使用指令