marshmallow/button-field

Laravel Nova 字段。

v1.7.0 2024-06-05 12:09 UTC

This package is auto-updated.

Last update: 2024-09-05 12:40:30 UTC


README

alt text

Nova 按钮包

Version Issues Code Coverage Licence

安装

您可以通过 composer 安装此包。

composer require marshmallow/button-field

用法

默认情况下,此包将解析在调用 make 方法时提供的列的链接。通过调用 resolveUsing 方法,您可以返回按钮的自己的生成链接。

use Marshmallow\ButtonField\ButtonField;
ButtonField::make('Certificate')->resolveUsing(function () {
    return '___YOUR_LINK_GOES_HERE___';
}),

方法

button()

当您调用 button 方法时,这将返回默认的 Laravel Nova 按钮。这应该与您 Nova 安装中的“更新”和“更新并继续编辑”按钮具有相同的样式。此方法默认调用,因此此行为应该直接可用。

$button_field->button();

target()

您可以通过调用 target 方法来更改按钮的行为。

$button_field->target('_blank'); // DEFAULT
$button_field->target('_self');

download()

当您调用 download 方法时,按钮的样式将改变。它将是一个带有旁边下载图标的较小按钮。我们还会在按钮上添加“下载”标签,以便浏览器知道您想要下载某个东西。您可以在本页顶部的截图中查看此示例。

$button_field->download();

setButtonText()

创建的按钮的默认文本是“下载”。您可以通过调用 setButtonText 方法来更改此文本。

$button_field->setButtonText('Go to user profile');

visibleWhen()

如果您希望按钮仅在满足条件时可见,则可以使用 visibleWhen 方法。

$button_field->visibleWhen(function() {
    // Call methods on your resource
    return $this->certificateIsAvailable();
}, __('Certificate is not generated yet'));

onClick()

您可以使用 onClick 方法运行对模型的各种操作。这是一个非常强大的方法,允许您执行任何操作!目前,此方法仅适用于文本类型按钮,因此我们必须将其设置为 text()。请检查下面的示例,了解如何在您的 Nova 资源上实现此操作。

ButtonField::make(__('Send invoice'))
	->text()
	->setButtonText(__('Send invoice'))
	->onClick(SendInvoice::class),

现在我们需要创建一个动作类,当按钮被点击时将运行。您可以在任何您喜欢的位置创建此类。这可能是在 app/Actions/Nova/SendInvoice.php。在此文件中,您创建一个实现 OnClickInterface 接口的类。您需要在类中创建 3 个方法。请检查下面的示例。

<?php

namespace App\Actions\Nova;

use Exception;
use Illuminate\Database\Eloquent\Model;
use Marshmallow\ButtonField\Contracts\OnClickInterface;

class SendInvoice implements OnClickInterface
{
    public function execute(Model $model): void
    {
        // Run your code!
    }

    public function success(): string
    {
        return __('Invoice is end successfully');
    }

    public function error(Exception $exception): string
    {
        return __('Something went wrong: :exception', [
            'exception' => $exception->getMessage(),
        ]);
    }
}

运行 Nova 动作

现在您可以使用按钮字段运行您的 Nova 动作。这意味着现在可以从表单视图运行 nova 动作。确保动作已在您的资源 actions 方法中注册,然后使用下面的示例代码。

ButtonField::make(__('Nova Action'))
    ->action(
        action: new \App\Nova\Actions\DemoAction,
        resourceId: $this->resource->id,
        label: 'Run the demo dude!'
    ),

变更日志

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

测试

composer test

安全

如果您发现任何安全相关的问题,请通过电子邮件 stef@marshmallow.dev 联系我们,而不是使用问题跟踪器。

致谢

许可证

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