abdullah-mateen/laravel-helping-metarial

Laravel 辅助函数和通用帮助材料

v1.1.2 2024-03-02 16:49 UTC

This package is auto-updated.

Last update: 2024-10-03 13:49:00 UTC


README

Laravel Helping Material

Laravel 帮助材料

本包收集了Laravel开发人员有用的工具。它包括常见任务的辅助函数、用于定义常量的枚举、对模型和控制器有帮助的特质、用于自定义验证的Laravel验证规则以及用于处理文件上传的简单媒体上传库。本包旨在使Laravel开发更加容易和快速。

目录

入门

本包提供各种功能,以增强您的Web开发体验。其中一些功能包括

  • 枚举:在您的代码中定义和使用枚举类型以提高可读性和一致性。
  • 辅助函数:使用方便的函数和宏来简化常见任务和操作。
  • 颜色接口:颜色类和RGBA代码列表。
  • 授权中间件:使用可定制的授权逻辑保护您的路由和控制器。
  • 通用模型:使用提供常见功能和特质的基模型类。
  • 有用的CSS:为您的元素应用一些有用的CSS类(如果您不使用Tailwind)。
  • 验证规则:使用自定义规则和消息验证您的数据。
  • 一些有用的特质:使用特质向枚举、类和控制器添加行为和功能。
  • 简单媒体库:轻松管理您的媒体文件和附件。

本包旨在帮助您处理Web开发项目。我们希望您觉得它有用且愉快。

先决条件

(回到顶部)

本项目需要PHP (版本8.1或更高),您可以使用xamppwamplaragon或任何其他适合您的选项,它们安装起来非常简单。要确保它们可在您的机器上使用,请尝试运行以下命令。

$ php -v
8.1.6

安装

(回到顶部)

使用以下命令通过composer安装此包

composer require abdullah-mateen/laravel-helping-metarial

发布

(回到顶部)

您可以使用发布命令发布所有文件。这将允许您根据需要修改文件。要发布您的文件,您需要在PowerShellcmd或任何其他终端中执行此命令。

php artisan lhm:publish

运行上述命令后,将显示要发布的文件菜单。您可以通过输入文件编号(用逗号分隔)来选择一个或多个文件,如下所示

Icone VS-Code

使用方法

枚举

(回到顶部)

本包使用php默认枚举,从(PHP 8 >= 8.1.0)开始可用。

示例

use \AbdullahMateen\LaravelHelpingMaterial\Enums\User\AccountStatusEnum;
use \AbdullahMateen\LaravelHelpingMaterial\Enums\User\GenderEnum;
use \AbdullahMateen\LaravelHelpingMaterial\Enums\User\RoleEnum;

class User extends Authenticatable {
    
    protected $casts = [
        'role'   => RoleEnum::class,
        'gender' => GenderEnum::class,
        'status' => AccountStatusEnum::class,
    ];
    
    // ...
}

User::create([
    'name'     => 'John Doe',
    'email'    => 'example@example.com',
    'password' => Hash::male('password'),
    'role'     => RoleEnum::Customer, // or you can use its value RoleEnum::Customer->value
    'gender'   => GenderEnum::Male, // or you can use its value GenderEnum::Male->value
    'status'   => AccountStatusEnum::Unverified, // or you can use its value AccountStatusEnum::Unverified->value
]);

注意:如果您打算将这些枚举用作值,则无需将它们转换为枚举。

辅助函数

(回到顶部)

辅助函数列表将很快提供。 目前您可以查看可用的函数这里

辅助函数默认情况下不会自动注册。要使用这些辅助函数,您必须首先使用命令 php artisan lhm:publish 发布它们,并选择辅助函数选项。之后,转到您的 composer.json 文件,并执行以下步骤

{
  "autoload": {
    "files": [
      "src/Helpers/helpers.php"
    ]
  }
}

最后,在当前目录的终端中运行命令 composer dump-autoload 或其缩写 composer du

示例

$user = auth_user();

$routeName = route_url_to_name('https://example.com') // will return 'index'

if (is_current_route('dashboard')) {
    // do something
}

// and much more ...

接口

(回到顶部)

示例

use \AbdullahMateen\LaravelHelpingMaterial\Interfaces\ColorsInterface;
use \AbdullahMateen\LaravelHelpingMaterial\Enums\User\AccountStatusEnum;

class Example implements ColorsInterface {
    
    protected $casts = [
        'status' => AccountStatusEnum::class,
    ];
    
    public function getColorClass() {
        return 'bg-' . self::SUCCESS_CLASS // bg-success: for background colors
        // return self::SUCCESS_CLASS // success: for text colors
    }
    
    public function getColorCode() {
        return self::SUCCESS // #28a745
    }
    
    public function getStatusColor() {
        return $this->status->color(); // Using Enum 'color' function
    }
    
}

您可以在枚举中查看另一个使用示例 这里

中间件

(回到顶部)

中间件已经预先注册,但如果您已使用命令 php artisan lhm:publish 发布并选择了中间件选项,您将收到相同中间件的覆盖文件。在这种情况下,需要手动注册中间件。为此,请在 app\Http\Kernel.php 文件中按照以下步骤操作

  // ...

  protected $routeMiddleware = [
      // ...
    
      'custom-authorize' => \App\Http\Middleware\Custom\AuthorizationMiddleware::class,
  ];

示例

// web.php File

use \AbdullahMateen\LaravelHelpingMaterial\Enums\User\RoleEnum;

Route::get('/dashboard', [DashboardController::class, 'index'])->middleware('authorize:1001,3001')

Route::get('/dashboard', [DashboardController::class, 'index'])->middleware('authorize:' . RoleEnum::column('value', 'admins', true))

// if you have published it 
Route::get('/dashboard', [DashboardController::class, 'index'])->middleware('custom-authorize:1001,3001')

查看授权中间件 这里

模型

(回到顶部)

资源

(回到顶部)

规则

(回到顶部)

简单媒体库

(回到顶部)

作者

(回到顶部)

许可协议

(回到顶部)

MIT许可证 (MIT) 2024 - Abdullah Mateen。请参阅 LICENSE.md 了解更多详细信息。