承接 whilesmart/eloquent-brands 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

whilesmart/eloquent-brands

最新稳定版本:1.0.0

Composer 安装命令:

composer require whilesmart/eloquent-brands

包简介

Polymorphic branding (name, logo, contact details) attachable to any model for Laravel applications.

README 文档

README

A polymorphic brand kit for Laravel: attach branding (name, contact details, colors, and image assets like logos / emblems / favicons in any format) to any model, scoped to an owner through whilesmart/eloquent-owner-access. Image assets are managed by whilesmart/eloquent-files.

A workspace, organisation, or store can hold many brands (one marked as the default used on documents); each brand carries many assets, each tagged with a role.

Install

composer require whilesmart/eloquent-brands
php artisan migrate

Routes register automatically under the api prefix with auth:sanctum. Set BRANDS_REGISTER_ROUTES=false to mount them yourself.

Attaching a brand to a model

use Whilesmart\Brands\Traits\HasBrands;

class Workspace extends Model
{
    use HasBrands;
}

$workspace->brands()->create([
    'owner_type' => Workspace::class,
    'owner_id'   => $workspace->id,
    'name'    => 'Maison Amani SARL',
    'email'   => 'billing@amani.africa',
    'phone'   => '+237 690 00 04 12',
    'address' => '12 Market St, Douala',
    'website' => 'https://amani.africa',
    'tax_id'  => 'M029817',
    'is_default' => true,
    'colors'  => [
        ['name' => 'Primary', 'value' => '#0B0D07'],
        ['name' => 'Accent',  'value' => '#2E3B8D'],
    ],
]);

$workspace->brands;          // every brand kit
$workspace->defaultBrand;    // the default brand used on documents
$workspace->defaultBrand->assets; // its image assets (Files)

The owner morph is the branded entity (a workspace, org, …). An owner can hold many brands; setting is_default on one demotes the others automatically.

Assets (logos, emblems, …)

Assets are stored via eloquent-files (owned by the brand). Each carries a role (logo, logo-dark, emblem, favicon, wordmark, … — free-form) and an optional label, so a brand kit can hold the same mark in several versions/formats.

Method Endpoint Notes
GET /api/brands List (filter by owner_*)
POST /api/brands Create
GET /api/brands/{brand} Show (includes assets)
PUT /api/brands/{brand} Update
DELETE /api/brands/{brand} Delete
POST /api/brands/{brand}/assets Upload an asset (asset file, role, label)
DELETE /api/brands/{brand}/assets/{file} Remove an asset
$logo = $brand->assetsByRole('logo')->first();
$logo?->url; // public URL of the asset

Custom model

The Brand model is swappable. Publish the config and point brands.model at your own class (extend the package model to add fields/casts/behaviour):

php artisan vendor:publish --tag=brands-config

UUID keys

Set BRANDS_UUIDS=true before migrating for UUID primary keys and uuid morph columns. This assumes the owner model also uses UUID keys.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-06-11

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固