首页 > 解决方案 > 在 Laravel 6 中执行公式而不每次都重复公式的正确方法是什么?

问题描述

在数据库中,我有每个员工的薪水。

我需要计算出从工资中扣除多少税,但我认为将其硬编码到每个视图中是不正确的,比如......

{{($bob->salary - 12,000) * 0.2}}

这显然是混乱和重复的。

我认为我需要做的是创建一个函数,我可以在其中简单地提供 Bob 的薪水,它计算税收并返回值。

就像是...

public function taxPayable($salary){
  $taxThreshold = 12,000;
  $taxRate = 0.2;
  if($salary >= $taxThreshold){
    $taxPayable = ($salary - $taxThreshold) * $taxRate;
  } else {
    $taxPayable = 0;
  }
  return $taxPayable;
}

那么简单..

{{Taxcalculator::taxPayable($bob->salary)}}

这样的事情可能吗?我会将函数放在哪里,在控制器或模型中?显然代码不起作用,只是为了展示我想要实现的目标,只是想知道我将如何实现它,这可能吗?谢谢。

标签: laravelmodel-view-controllermodelcontrollerlaravel-6

解决方案


您可以创建一个自定义 Helper 类并在 Controller 中使用它来执行相同的操作:

第 1 步:创建您的 Helpers(或其他自定义类)文件并为其提供匹配的命名空间。编写你的类和方法:

<?php // Code within app\Helpers\Helper.php

namespace App\Helpers;

class Helper
{
    public static function taxPayable($salary)
    {
         // perform your calculation here
        return $taxPayable;
    }
}

第 2 步:创建别名:

<?php // Code within config/app.php

    'aliases' => [
     ...
        'Helper' => App\Helpers\Helper::class,
     ...

第三步:composer dump-autoload在项目根目录下运行

第 4 步:在 Laravel 应用程序的任何地方使用这个类:

<?php // Code within app/Http/Controllers/SomeController.php

namespace App\Http\Controllers;

use Helper;

class SomeController extends Controller
{

    public function __construct()
    {
        Helper::taxPayable($bob->salary);
    }

甚至您也可以在视图中使用它,例如:

{{Helper::taxPayable($bob->salary);}}

推荐阅读