envor/platform

这是我包的平台

资助包维护!
envor

v1.6.4 2024-04-25 18:59 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

配置您的平台

安装

您可以通过composer安装该包

composer require envor/platform

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="platform-config"

这是发布配置文件的内容

// config/database.php
return [
        /*
    |--------------------------------------------------------------------------
    | Default Database Connection Name
    |--------------------------------------------------------------------------
    |
    | Here you may specify which of the database connections below you wish
    | to use as your default connection for all database work. Of course
    | you may use many connections at once throughout the application.
    |
    */

    'platform' => env('PLATFORM_DB_CONNECTION', 'sqlite'),
    'default' => env('DB_CONNECTION', 'sqlite'),
];

// config/auth.php
return [
    'passwords' => [
        'users' => [
            'provider' => 'users',
            'table' => 'password_reset_tokens',
            'connection' => env('PLATFORM_DB_CONNECTION', 'sqlite'),
            'expire' => 60,
            'throttle' => 60,
        ],
    ],
];

// config/platform.php

return [
    'landing_page_disk' => env('LANDING_PAGE_DISK', 'public'),
    'profile_photo_disk' => env('PROFILE_PHOTO_DISK', 'public'),
    'stores_contact_info' => env('STORES_CONTACT_INFO', true),
    'empty_logo_path' => 'profile-photos/no_image.jpg',
    'empty_phone' => '(_ _ _) _ _ _- _ _ _ _',
    'empty_fax' => '(_ _ _) _ _ _- _ _ _ _',
    'logo_path' => env('PLATFORM_LOGO_PATH'),
    'name' => env('PLATFORM_NAME'),
    'phone' => env('PLATFORM_PHONE_NUMBER'),
    'fax' => env('PLATFORM_FAX_NUMBER'),
    'street_address' => env('PLATFORM_STREET_ADDRESS'),
    'city_state_zip' => env('PLATFORM_CITY_STATE_ZIP'),
    'email' => env('PLATFORM_EMAIL'),
];

// config/session.php

<?php

return [
    'connection' => env('PLATFORM_DB_CONNECTION'),
];

用法

使用平台连接

将特质Envor\Platform\UsesPlatformConnection添加到您的模型

class Business extends Model
{
    use \Envor\Platform\UsesPlatformConnection;
}

使用平台UUID

在迁移中向您的模型表添加uuid

$table->uuid('uuid')->index()->unique();

将特质Envor\Platform\UsesPlatformUuids添加到您的模型

class Business extends Model
{
    use \Envor\Platform\HasPlatformUuids;
}

标志

允许模型拥有一个标志,用户可以上传、删除和替换。

  1. profile_photo_path(字符串)字段添加到您的模型数据库表
$table->text('profile_photo_path')->nullable();
  1. 将特质\Envor\Platform\HasProfilePhoto添加到您的模型。

可以是任何模型,但我们将使用用户模型作为示例。

...
class User extends Authenticatable
{
    ...
    use \Envor\Platform\HasProfilePhoto;
    ...
}

用法示例

$user->updateProfilePhoto($request->file('photo'));
<img src="{{ $user->profile_photo_url }}" alt="{{ $user->name }}" class="rounded-full h-20 w-20 object-cover">
  1. 使用表单(可选)

注意

需要livewire/volt和tailwind。

composer require livewire/volt
php artisan volt:install

现在您可以将表单添加到任何视图中

@livewire('update-logo-form', ['model' => auth()->user()])

屏幕截图

alt text

着陆页

允许模型拥有一个HTML "着陆页",用户可以上传、删除和替换。

  1. 发布并运行迁移

这将创建一个landing_pages表,其中将存储着陆页路径和关系信息。

php artisan vendor:publish --tag='platform-migrations'
php artisan migrate --path=database/migrations/platform
  1. 将特质\Envor\Platform\HasLandingPage添加到您的模型。

可以是任何模型,但我们将使用用户模型作为示例

...
class User extends Authenticatable
{
    ...
    use \Envor\Platform\HasLandingPage;
    ...
}

用法示例

$user->updateLandingPage($request->file('landing-page'));
<a href="{{ $user->url }}">Visit Landing Page</a>
  1. 使用表单(可选)

注意

需要livewire/volt和tailwind。

composer require livewire/volt
php artisan volt:install

现在您可以将表单添加到任何视图中

@livewire('update-landing-page-form', ['model' => auth()->user()])

屏幕截图

alt text

  1. 将着陆页设置为主页(可选)

在这个示例中,我们将展示如何为一个具有domain属性的用户的操作。

在迁移中将域名字段添加到用户表中

$table->string('domain')->nullable();

然后显示在'/'路由上的页面

use Illuminate\Http\Request;

Route::get('/', function (Request $request) {

    $user = \App\Models\User::where('domain', $request->getHost())->first();

    if ($user?->landingPage) {
        return response()->file(Storage::disk($user->landingPageDisk())->path($user->landingPagePath()));
    }

    return view('welcome');

})->name('home');

联系信息

允许模型拥有地址和其他联系详情

  1. 将联系数据文本(或json)字段添加到您的模型数据库表
$table->text('contact_data')->nullable();
  1. 将特质\Envor\Platform\HasContactData添加到您的模型。

可以是任何模型,但我们将使用用户模型作为示例

...
class User extends Authenticatable
{
    ...
    use \Envor\Platform\HasContactData;
    ...
}

用法示例

$user->updateContactData([
    'name' => 'Jane Doe',
    'address' => [
        '1234 somewhere lane'
    ];
]);
  1. 使用表单(可选)

注意

需要livewire/volt和tailwind。

composer require livewire/volt
php artisan volt:install

现在您可以将表单添加到任何视图中

@livewire('update-contact-info-form', ['model' => $user, 'readonly' => $user->id != auth()->id()])

屏幕截图

alt text

测试

composer test

变更日志

有关最近更改的更多信息,请参阅变更日志

贡献

有关详细信息,请参阅贡献指南

安全漏洞

请查看我们的安全策略以了解如何报告安全漏洞。

鸣谢

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件