首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用许多情况改进` `switch`‘代码

用许多情况改进` `switch`‘代码
EN

Stack Overflow用户
提问于 2022-03-30 11:31:44
回答 3查看 68关注 0票数 0

使用: Laravel 8与Yajra数据。

我想要有颜色在列的基础上的案例类型!

目前我是这样做的:

代码语言:javascript
复制
@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+案例),是否有一种方法可以重构它/减少代码行数?

EN

回答 3

Stack Overflow用户

发布于 2022-03-30 12:00:47

创建关联数组并将其存储在config中。

代码语言:javascript
复制
$caseType=['Death'=>'High','Theft'=>'High','Bad behavior'=>'Medium'];

所以您只需执行以下操作

代码语言:javascript
复制
  <span class="alert-danger p-7">{{$caseType[$report->caseType]}}</span>
票数 1
EN

Stack Overflow用户

发布于 2022-03-30 12:08:57

为什么不声明一个带有caseTypes键的数组呢?你可以通过控制器传递这个。

代码语言:javascript
复制
$testArray[
    'Death' => [
        'color' => 'danger',
        'text' => 'High'
    'Theft' => [
        'color' => 'danger',
        'text' => 'High'
    ],        
    'Bad behavior' => [
        'color' => 'warning',
        'text' => 'Medium'
    ],
    'Other cases' => [
        'color' => 'other colors',
        'text' => 'text'
    ]
];

所以在你的刀刃上你可以这样做:

代码语言:javascript
复制
@foreach ($report->caseTypes as $caseType)
    <span class="alert-{{ $testArray[$caseType]['color'] }}p-7">{{ $testArray[$caseType]['text'] }}</span>
@endforeach
票数 1
EN

Stack Overflow用户

发布于 2022-03-30 12:12:07

您可以将您的开关情况重构为使用数组。

  • 创建一个包含所有情况的关联数组,其中键作为大小写,值作为颜色代码。

代码语言:javascript
复制
$cases = [
'Death' => 'danger',
'BadBehaviour' => 'warning',
'Theft' => 'info',
'Life' => 'success'
]; 

然后

  • 在您的观点

<span class="alert alert-{{ $cases[$report->caseType] }}">High</span>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71676431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档