astrogoat/promobar

Strata 促销栏应用程序

资助包维护!
astrogoat

安装次数: 9,762

依赖项: 0

建议者: 0

安全: 0

星级: 0

观察者: 4

分支: 0

开放问题: 0

语言:Blade

1.15.0 2024-05-26 18:27 UTC

README

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

安装

您可以通过 composer 安装此包

composer require astrogoat/promobar

使用

在您希望促销栏出现的位置包含 Blade 组件,每当通过应用程序设置启用促销栏时。

<x-promobar::show />

由于它是一个 Blade 组件,您还可以添加任何需要的属性。

<x-promobar::show class="sticky top-0" />

扩展

如果您有特殊需求,可以扩展促销栏以使用您自己的设置和渲染。

扩展它需要三个文件。

  • 一个扩展 Astrogoat\Promobar\Types\PromobarType 的类型类。
  • 两个 Blade 文件
    • 一个用于设置视图
    • 还有一个用于面向用户的侧边栏,它将位于您的网站上。

让我们从类型类开始。创建一个新的类并扩展 Astrogoat\Promobar\Types\PromobarType

该类只需要两个方法。 renderSettingsrenderComponent,它们需要您两个 Blade 文件的字符串路径。

<?php

namespace App\Promobar\Types;

use Astrogoat\Promobar\Types\PromobarType;

class PopupType extends PromobarType
{
    public function renderSettings() : string
    {
        return 'promobar.settings';
    }

    public function renderComponent() : string
    {
        return 'promobar.component';
    }
}

让我们创建这两个 Blade 文件。

resources/views/promobar/settings.blade.php

在这里,您可以定义当您转到 应用程序 -> 促销栏 并选择您的促销栏类型时设置将如何显示。尽管我们还没有连接它,所以目前不会显示任何内容。

<div>
    <input
        name="payload[content_desktop]"
        wire:model="payload.content_desktop"
    />

    <input
        name="payload[content_mobile]"
        wire:model="payload.content_mobile"
    />
</div>

重要:当您添加任何需要持久化的输入类型时,您需要添加 namewire:model 属性。名称必须以 payload[] 开头的 html 数组。您可以在括号中放置任何您想要的名称。对于 wire:model,它必须以 payload. 开头,再次,您可以在点号之后放置任何您想要的名称,但它应该与您的 name 属性相同。

现在,在您的组件 Blade 视图(将成为面向用户的组件)中,您可以使用在设置 Blade 文件中定义的输入。

resources/views/promobar/component.blade.php

<div>
    <span class="md:hidden">{{ $payload['content_mobile'] ?? '' }}</span>
    <span class="hidden md:flex">{{ $payload['content_desktop'] ?? '' }}</span>
</div>

最后一步是连接它们。
在您的服务提供商的 register 方法中,您可以连接到促销栏。 $promobar->addType() 方法需要两个参数。第一个是键,在这个例子中我们称之为 popup,第二个参数是我们之前创建的类型类。

use App\Promobar\Types\PopupType;

$this->callAfterResolving('Astrogoat\\Promobar\\Promobar', function ($promobar) {
    $promobar->addType(key: 'popup', type: PopupType::class);
});

真实世界示例

您可以在 Zaius 应用程序 中看到一个真实世界的示例,说明如何将其连接到促销栏。

测试

composer test

变更日志

请参阅 变更日志 了解最近更改的信息。

贡献

请参阅 贡献指南 了解详细信息。

安全漏洞

请参阅 我们的安全策略 了解如何报告安全漏洞。

鸣谢

此促销栏包是从出色的 Spatie 促销栏包 分支的。如果您可以的话,请支持他们。

许可证

MIT许可证(MIT)。请参阅许可证文件获取更多信息。