使用: Laravel 8与Yajra数据。
我想要有颜色在列的基础上的案例类型!
目前我是这样做的:
@switch($report->caseType)
@case($report->caseType == 'Death')
@case($report->caseType == 'Theft')
<span class="alert-danger p-7">High</span>
@break
@case($report->caseType == 'Bad behavior')
<span class="alert-warning p-7">Medium</span>
@break
@default
@endswitch在这段代码中会添加很多案例(20+案例),是否有一种方法可以重构它/减少代码行数?
发布于 2022-03-30 12:00:47
创建关联数组并将其存储在config中。
$caseType=['Death'=>'High','Theft'=>'High','Bad behavior'=>'Medium'];所以您只需执行以下操作
<span class="alert-danger p-7">{{$caseType[$report->caseType]}}</span>发布于 2022-03-30 12:08:57
为什么不声明一个带有caseTypes键的数组呢?你可以通过控制器传递这个。
$testArray[
'Death' => [
'color' => 'danger',
'text' => 'High'
'Theft' => [
'color' => 'danger',
'text' => 'High'
],
'Bad behavior' => [
'color' => 'warning',
'text' => 'Medium'
],
'Other cases' => [
'color' => 'other colors',
'text' => 'text'
]
];所以在你的刀刃上你可以这样做:
@foreach ($report->caseTypes as $caseType)
<span class="alert-{{ $testArray[$caseType]['color'] }}p-7">{{ $testArray[$caseType]['text'] }}</span>
@endforeach发布于 2022-03-30 12:12:07
您可以将您的开关情况重构为使用数组。
$cases = [
'Death' => 'danger',
'BadBehaviour' => 'warning',
'Theft' => 'info',
'Life' => 'success'
]; 然后
<span class="alert alert-{{ $cases[$report->caseType] }}">High</span>
https://stackoverflow.com/questions/71676431
复制相似问题