在laravel

时间:2015-10-08 11:19:18

标签: php laravel laravel-4 laravel-5 laravel-5.1

我使用了PHP的 NumberFormatter 。但我收到的错误是' NumberFormatter not found '。然后我使用 Money包https://packagist.org/packages/money/money但是,不支持INR(印度货币)。

虽然我不太关心带有数字的卢比符号,但至少我需要格式化数字; 例如: 7827894.8 78,27,894.80 。 我怎样才能实现它?

我无法使用,

  • NumberFormatter(虽然我从php.ini取消注释,但Intl包未检测到)
  • money_format()(因为我的是windows系统)
  • Money / Money Package(我的问题没有可用的功能)

请帮助我实现代表资金的正确方式(使用任何或使用自定义功能 TIA

2 个答案:

答案 0 :(得分:1)

几个月前我写的github gists之一,

<?php
    function IND_money_format($money){

            $decimal = (string)($money - floor($money));
            $money = floor($money);
            $length = strlen($money);
            $m = '';
            $money = strrev($money);
            for($i=0;$i<$length;$i++){
                if(( $i==3 || ($i>3 && ($i-1)%2==0) )&& $i!=$length){
                    $m .=',';
                }
                $m .=$money[$i];
            }
            $result = strrev($m);
            $decimal = preg_replace("/0\./i", ".", $decimal);
            $decimal = substr($decimal, 0, 3);
            if( $decimal != '0'){
            $result = $result.$decimal;
            }
            return $result;
        }
?>

如何在laravel中将其添加为全局辅助函数?

1 - 在app目录中为辅助函数创建一个Helpers目录     `mkdir app / Helpers&#39;

2 - 下载Indian_currency_format.php文件并将其保存到Helpers目录。

3 - 在你的composer.json中将文件添加到&#34;文件&#34;自动加载的属性,以便它可以由作曲家使用PSR-4自动加载加载     (见https://getcomposer.org/doc/04-schema.md#psr-4),

like so:
        "autoload": {
            "classmap": [
                "database/seeds",
                "database/factories"
             ],
             "psr-4": {
                "App\\": "app/"
             },
             "files": [
                "app/Helpers/indian_money_format.php"
             ]
        },

4 - 最后运行composer dump-autoload以刷新自动加载缓存。

查看我在how to format a number to Indian Rupee format in PHP / Laravel上的博文,深入了解此功能的实际运作方式。

答案 1 :(得分:0)

如果您不想使用任何软件包并且想以laravel方式执行此操作,我建议您执行以下操作。该解决方案融合了纯PHP。我已经在laravel 5中对此进行了测试,效果很好。

首先运行:

创建HelperServiceProvider
  

php artisan make:provider HelperServiceProvider

然后打开config / app.php并注册服务提供商:

'providers' => [

    /* other providers */

    'App\Providers\HelperServiceProvider',

]

现在创建一个文件夹 app \ Helpers 并在该文件夹中创建一个文件 moneyformat.php

<?php

/* moneyformat.php */

    function rupee_format($num) {
        $explrestunits = "" ;
        if(strlen($num)>3){
            $lastthree = substr($num, strlen($num)-3, strlen($num));
            $restunits = substr($num, 0, strlen($num)-3); // extracts the last three digits
            $restunits = (strlen($restunits)%2 == 1)?"0".$restunits:$restunits; // explodes the remaining digits in 2's formats, adds a zero in the beginning to maintain the 2's grouping.
            $expunit = str_split($restunits, 2);
            for($i=0; $i<sizeof($expunit); $i++){
                // creates each of the 2's group and adds a comma to the end
                if($i==0)
                {
                    $explrestunits .= (int)$expunit[$i].","; // if is first value , convert into integer
                }else{
                    $explrestunits .= $expunit[$i].",";
                }
            }
            $thecash = $explrestunits.$lastthree;
        } else {
            $thecash = $num;
        }
        return $thecash; // writes the final format where $currency is the currency symbol.
    }

现在,您可以在刀片文件中显示数字,如下所示:

{{ rupee_format($price) }}

参考question1question2