【问题标题】:Laravel table cell color with cell valueLaravel 表格单元格颜色和单元格值
【发布时间】:2020-07-02 09:00:39
【问题描述】:

这是我的刀片循环。

@for ($coun=0;$coun< $count_2; $coun++)
<table id="table2" border="1" style="display: inline-block;clear: both;">
        <tbody>
          <tr><td><?php print_r( $array_mem['id'][$coun]); ?></td></tr>
          <tr><td><?php print_r( $array_mem['Name'][$coun]); ?></td></tr>
          <tr><td><?php print_r( $array_mem['Mark'][$coun]); ?></td></tr>
          <tr><td><?php print_r( $array_mem['Sub_1'][$coun]); ?></td></tr>
          <tr><td><?php print_r( $array_mem['Sub_2'][$coun]); ?></td></tr>
          <tr><td><?php print_r( $array_mem['Sub_3'][$coun]); ?></td></tr>
        </tbody>
</table> @endfor

我有一组条件来检查每列中的值。并且还取决于更改单元格颜色。

+-------------------+-------------+
| Condition         | Cell Colour |
+-------------------+-------------+
| If Id < 10        | Red         |
+-------------------+-------------+
| If Id>10 && Id<20 | Green       |
+-------------------+-------------+
| If Mark <20       | Red         |
+-------------------+-------------+
| If Mark >20       | Green       |
+-------------------+-------------+
| If Sub_1 < 20     | Red         |
+-------------------+-------------+

有什么方法可以检查并制作特定颜色的单元格。

除了使用 if else 条件外,我正在寻找其他东西,这意味着使用 function 或 this。

【问题讨论】:

标签: php laravel laravel-5


【解决方案1】:

您可以从您的 model 类中创建一个 mutator 并将您的所有逻辑添加到

public function getCellColorAttribute(){
  $cellColor = "";
  if($this->id > 10 || $this->mark < 20 || $this->sub_1 < 20 ) 
        $cellColor = 'red';
  else 
        $cellColor = 'green';

  return $cellColor;
}

现在,当您在 view 中迭代此模型时,您可以使用 cell_color 访问此新属性

您可以阅读更多关于 Accessors & Mutators here

【讨论】:

  • 如何在刀片中调用它。我不精通 Laravel
  • 你能添加你的控制器方法吗?在你的问题?
  • Route::get('/search-panel', UploadPanelController@search_index');
  • 添加你的控制器在你的情况下它被称为UploadPanelController我认为
  • 是的控制器是 UploadPanelController ,功能是 search_index
【解决方案2】:

您应该在其他地方提取逻辑,而不是在视图中执行 if/else,您可以通过多种方式执行此操作。一种方法是创建一个帮助文件并声明一个帮助函数并在视图中使用它。因此,为此,您可以在app/Helpers/Helper.php 中创建一个帮助文件,然后在您的composer.json 文件中,您可以在files 部分中添加一个条目,如下所示:

"autoload": {
    "classmap": [
        ...
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "app/Helpers/Helpers.php"
    ]
},

然后在你的"app/Helpers/Helpers.php"文件中添加一个函数,例如:

if (!function_exists('getCellColor')) {
    function getCellColor($arg) {
        $cellColor = '';

        // Implement your login verifying the $arg...

        return $cellColor;
    }
}

那么你应该从你的terminal/command prompt 运行composer dump-autoload。现在您可以在需要格式化的地方使用该功能。例如:

<tr><td style="color: {{ getCellColor($array_mem) }}"></td></tr>

在这种情况下,您可以从函数中返回如下内容:

// ...

$cellColor = '';

// Verify and set the color...

$cellColor = 'red';

return $cellColor;

或者,您可以使用/返回class,例如:

$cellColorClass = 'red';

// assign the right color class...

return $cellColorClass;

你可以像这样使用它:

<tr><td class="{{ getCellColor($array_mem) }}"></td></tr>

在这种情况下,您需要在新的或现有的 css 文件中创建一些 css 规则,例如:

.red {
    color: red;
}

.green {
    color: green;
}

就是这样。这是众多方法中的一种,因此请采纳这个想法并使用您认为对您更好的方法,但这种方法很简单,IMO。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 2022-01-10
    • 2015-11-29
    • 2013-07-01
    • 2016-11-17
    • 2018-10-05
    • 2015-01-24
    相关资源
    最近更新 更多