mercuryseries/laravel-helpers

动态方法助手

1.0.5 2020-05-30 15:42 UTC

This package is auto-updated.

Last update: 2024-09-29 04:49:13 UTC


README

在使用 Laravel 之前,我是 Ruby on Rails 的大粉丝,我最喜欢的 Ruby on Rails 的特性之一就是能够创建一个助手方法(在模块中),并且能够像全局方法一样调用它。

Module BooksHelper
  def format_price(book)
    if book.free?
      content_tag(:strong, 'Free!')
    else
      number_to_currency(book.price)
    end
   end
end
<p><%= format_price(book) %></p>

这不是很酷吗?

现在,正如你可能猜到的,我想要在 Laravel 中拥有相同的东西。

哦,我应该说过,我现在有了和 Laravel 相同的东西 :)

免责声明:当然,你可以创建一个包含许多文件或仅包含一个全局文件助手的文件夹,并用 Composer 自动加载它,但我更愿意创建一个类,这样在测试时更加清晰。所以,每个人可能都不会喜欢它!

以下是如果你也想这样做的话的步骤

通过 Composer 安装此包

composer require mercuryseries/laravel-helpers

config/app.php 中注册包服务提供者,添加以下内容

MercurySeries\Helpers\HelpersServiceProvider::class,

在您的 app 文件夹中创建一个 Helpers 目录。

现在您可以在您的 app 文件夹中创建一个 Helpers 目录。

添加一些包含您的助手方法类的文件

PS:所有助手方法都需要是静态的。

<?php

// File: app/Helpers/BooksHelper.php

namespace App\Helpers;

use App\Book;

class BooksHelper
{
    public static function formatPrice(Book $book)
    {
        if($book->isFree()) {
            return '<strong>Free!</strong>';
        } else {
            return sprintf('$%f', number_format($book->price, 2, '.', ''));
        }
    }
}
<?php

// File: app/Helpers/PagesHelper.php

namespace App\Helpers;

class PagesHelper
{
    public static function setActive($route)
    {
        // your code goes here
    }
}

现在和我们一起享受使用助手方法带来的乐趣吧

{{ $formatPrice($book) }}
{{ $setActive('home') }}

您也可以这样调用它

{{ App\Helpers\BooksHelper::formatPrice($book) }}

别忘了根据您的应用程序的根命名空间相应地更改 App。但这正是我想避免的(那些冗长的内容)。

更多配置?

可以通过配置文件轻松更改 Helpers 文件夹名称和命名空间 App\Helpers。只需发布并编辑它即可。

php artisan vendor:publish --provider="MercurySeries\Helpers\HelpersServiceProvider"

干杯!