yaroslawww/laravel-forms-entries

此包已废弃,不再维护。作者建议使用 think.studio/laravel-forms-entries 包。

用于保存表单条目并发送通知的包。

3.2.0 2023-09-10 11:28 UTC

This package is auto-updated.

Last update: 2023-09-10 11:43:24 UTC


README

Packagist License Packagist Version Total Downloads Build Status Code Coverage Scrutinizer Code Quality

用于保存表单条目(如联系我们表单等)并发送通知的包

安装

通过 composer 安装此包

composer require think.studio/laravel-forms-entries

您可以使用以下命令发布资源文件

php artisan vendor:publish --provider="FormEntries\ServiceProvider" --tag="config"
php artisan vendor:publish --provider="FormEntries\ServiceProvider" --tag="lang"

要禁用默认迁移,请将以下代码添加到 app 服务提供者中

use FormEntries\Forms\Form;
use FormEntries\Forms\FormContent;

\FormEntries\FormEntryManager::ignoreMigrations()

Form::typesMap([
    'form-contact' => ContactUsForm::class,
]);
FormContent::typesMap([
    'contact-us' => ContactUsFormContent::class,
]);

您可以将默认路由添加到您的 web.php

\FormEntries\Facades\FormEntryManager::routes();

用法

使用预定义类

如果您不需要具有验证的自定义类。

$formEntry = \FormEntries\Forms\UniversalForm::make()
                ->enableStoringData()
                ->enableNotifications()
                ->process($request);

使用自定义表单和内容

// /app/Http/FormEntries/FormContent/ContactUsFormContent.php
class ContactUsFormContent extends FormContent
{
    protected array $requestKeysToSave = ['email', 'message'];

    public function validateRequest(Request $request): static
    {
        $request->validate([
            'email'   => ['required', 'email'],
            'message' => ['required', 'min:10', 'max:500'],
        ]);

        return $this;
    }
}
// /app/Http/FormEntries/Forms/ContactUsForm.php
class ContactUsForm extends Form
{
    protected string $formContentClass = ContactUsFormContent::class;

    public function notify(FormEntry $model): bool
    {
        Notification::route('mail', 'tester@test.admin')
                    ->notify(new ($this->getFormNotificationClass())($model->content));

        return true;
    }
}
<form action="{{route('forms-entries.submit')}}"
      method="post"
>
    @csrf
    <input type="hidden"
           name="{{config('forms-entries.routing.form_name_parameter')}}"
           value="{{\App\Http\FormEntries\Forms\FolioMetricsForm::getType()}}">
    Other fields
    <button type="submit">Submit</button>
</form>

致谢

  • Think Studio