Laravel 组件和工具集合

v2.18.1 2024-08-27 12:29 UTC

This package is auto-updated.

Last update: 2024-09-27 12:42:36 UTC


README

安装

composer require bondarde/lox

php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"

如果需要,在 config/permission.php 中自定义表名,例如:

'table_names' => [
    'roles'                 => 'acl_roles',
    'permissions'           => 'acl_permissions',
    'model_has_permissions' => 'acl_model_has_permissions',
    'model_has_roles'       => 'acl_model_has_roles',
    'role_has_permissions'  => 'acl_role_has_permissions',
],

运行迁移

php artisan migrate

如果需要,将中间件别名添加到 app/Http/Kernel.php 文件的 $middlewareAliases 数组中

protected $middlewareAliases = [
    …
    'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
    'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class,
    'role_or_permission' => \Spatie\Permission\Middlewares\RoleOrPermissionMiddleware::class,
    …
];

如果需要,在 AuthServiceProviderboot() 方法中授予 "super-admin" 角色所有权限

Gate::before(
    fn($user, $ability) => $user->hasRole(AclSetupData::ROLE_SUPER_ADMIN) && $ability !== AclSetupData::PERMISSION_VIEW_MODEL_META_DATA
        ? true
        : null
);

创建超级管理员角色和所有配置的角色/权限

php artisan acl:update-roles-and-permission

注册后,通过 ID 或电子邮件地址将管理员组分配给(您的)用户

php artisan acl:make-super-admin 1

或者

php artisan acl:make-super-admin mail@example.com

发布配置

php artisan vendor:publish --provider="BondarDe\Lox\LoxServiceProvider" --tag=config

此命令还将发布

  • package.json
  • postcss.config.json
  • tailwind.config.js
  • vite.config.js

样式

发布

php artisan vendor:publish --provider="BondarDe\Lox\LoxServiceProvider" --tag=styles

将它们添加到您的 resources/scss/app.scss

@tailwind base;
@tailwind components;
@tailwind utilities;

@import 'lox/base';
@import 'lox/tools';
@import 'lox/boolean';

Tailwind 配置

php artisan vendor:publish --provider="BondarDe\Lox\LoxServiceProvider" --tag=tailwind

汉堡菜单作为 Tailwind 插件

php artisan vendor:publish --provider="BondarDe\Lox\LoxServiceProvider" --tag=tailwind-burger-menu

Laravel Vite & Tailwind CSS

package.json:

{
    "private": true,
    "scripts": {
        "dev": "vite",
        "build": "vite build"
    },
    "devDependencies": {
        "autoprefixer": "^10.4.0",
        "laravel-vite-plugin": "^0.5.2",
        "postcss": "^8.4.4",
        "sass": "^1.30.0",
        "sass-loader": "^12.6.0",
        "tailwindcss": "^3.2.0",
        "vite": "^3.0.4"
    }
}

构建和部署

构建不同阶段

composer/bin/dep build stage=test
composer/bin/dep deploy stage=test

对于 本地 OPCache 重置,必须调用 http://127.0.0.1/opcache-reset.php 以调用 PHP 的 opcache_clear()

如果不可能,则在 deploy.php 中添加

set('opcache_reset_mode', 'remote');

用户 deployer 应该能够执行 sudo 而不需要密码提示来执行 chmodchownchgrp

sudo visudo


deployer ALL=(ALL:ALL) NOPASSWD: /usr/bin/chmod *
deployer ALL=(ALL:ALL) NOPASSWD: /usr/bin/chown *
deployer ALL=(ALL:ALL) NOPASSWD: /usr/bin/chgrp *

Vite 构建

npm run vite

npm run vite build

用法

页面结构

<x-page
    title="Page Title"
    h1="Headline"
>
    <p>Your page content, beautifully staged.</p>
</x-page>

对于页面组件,您必须创建页面头部和页脚

php artisan make:component HtmlHeader
php artisan make:component PageHeader
php artisan make:component PageFooter

php artisan make:component AdminPage

表单

<x-form-row
    for="input-name"
>
    ...
</x-form-row>

按钮

待定

FortifyServiceProvider

发布

php artisan vendor:publish --provider="Laravel\Fortify\FortifyServiceProvider"

boot() 中添加

Fortify::registerView(config('lox.views.auth.register'));
Fortify::loginView(config('lox.views.auth.login'));
Fortify::confirmPasswordView(config('lox.views.auth.confirm-password'));
Fortify::requestPasswordResetLinkView(config('lox.views.auth.forgot-password'));
Fortify::resetPasswordView(config('lox.views.auth.reset-password'));
Fortify::twoFactorChallengeView(config('lox.views.auth.two-factor-challenge'));
Fortify::verifyEmailView(config('lox.views.auth.verify-email'));

config/app.php 中添加服务提供者

\App\Providers\FortifyServiceProvider::class,

数据库会话存储

php artisan session:table

php artisan migrate

SSO

"sso" 添加到 config/fortify.php 中的 features 数组。

config/fortify-options.php 中添加 SSO 提供者,例如:

return [
    'sso' => [
        'apple' => true,
        'facebook' => true,
        'twitter' => true,
    ],
];

对于每个提供者,安装 Socialite Providers 包

composer require socialiteproviders/<provider>

遵循安装步骤:https://socialiteproviders.com/