envor / platform
这是我包的平台
v1.6.4
2024-04-25 18:59 UTC
Requires
- php: ^8.2
- illuminate/contracts: ^11.0
- spatie/laravel-data: ^4.1
- spatie/laravel-package-tools: ^1.16.2
Requires (Dev)
- larastan/larastan: ^2.0.1
- laravel/pint: ^1.0
- livewire/volt: ^1.6
- nunomaduro/collision: *
- orchestra/testbench: ^9.0
- pestphp/pest: ^2.20
- pestphp/pest-plugin-arch: ^2.5
- pestphp/pest-plugin-laravel: ^2.2
- phpstan/extension-installer: *
- phpstan/phpstan-deprecation-rules: *
- phpstan/phpstan-phpunit: ^1.0
README
配置您的平台
安装
您可以通过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; }
标志
允许模型拥有一个标志,用户可以上传、删除和替换。
- 将
profile_photo_path
(字符串)字段添加到您的模型数据库表
$table->text('profile_photo_path')->nullable();
- 将特质
\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">
- 使用表单(可选)
注意
需要livewire/volt和tailwind。
composer require livewire/volt
php artisan volt:install
现在您可以将表单添加到任何视图中
@livewire('update-logo-form', ['model' => auth()->user()])
屏幕截图
着陆页
允许模型拥有一个HTML "着陆页",用户可以上传、删除和替换。
- 发布并运行迁移
这将创建一个landing_pages
表,其中将存储着陆页路径和关系信息。
php artisan vendor:publish --tag='platform-migrations'
php artisan migrate --path=database/migrations/platform
- 将特质
\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>
- 使用表单(可选)
注意
需要livewire/volt和tailwind。
composer require livewire/volt
php artisan volt:install
现在您可以将表单添加到任何视图中
@livewire('update-landing-page-form', ['model' => auth()->user()])
屏幕截图
- 将着陆页设置为主页(可选)
在这个示例中,我们将展示如何为一个具有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');
联系信息
允许模型拥有地址和其他联系详情
- 将联系数据文本(或json)字段添加到您的模型数据库表
$table->text('contact_data')->nullable();
- 将特质
\Envor\Platform\HasContactData
添加到您的模型。
可以是任何模型,但我们将使用用户模型作为示例
... class User extends Authenticatable { ... use \Envor\Platform\HasContactData; ... }
用法示例
$user->updateContactData([ 'name' => 'Jane Doe', 'address' => [ '1234 somewhere lane' ]; ]);
- 使用表单(可选)
注意
需要livewire/volt和tailwind。
composer require livewire/volt
php artisan volt:install
现在您可以将表单添加到任何视图中
@livewire('update-contact-info-form', ['model' => $user, 'readonly' => $user->id != auth()->id()])
屏幕截图
测试
composer test
变更日志
有关最近更改的更多信息,请参阅变更日志。
贡献
有关详细信息,请参阅贡献指南。
安全漏洞
请查看我们的安全策略以了解如何报告安全漏洞。
鸣谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。