承接 lyrasoft/contact 相关项目开发

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

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

lyrasoft/contact

Composer 安装命令:

composer require lyrasoft/contact

包简介

LYRASOFT contact package

README 文档

README

contact

Installation

Install from composer

composer require lyrasoft/contact

Then copy files to project

php windwalker pkg:install lyrasoft/contact -t routes -t migrations -t seeders

Seeders

  • Add contact-seeder.php to resources/seeders/main.php

Languages

Add this line to admin & front middleware:

$this->lang->loadAllFromVendor(\Lyrasoft\Contact\ContactPackage::class, 'ini');

If you want to copy language files, Run this command (Optional):

php windwalker pkg:install lyrasoft/contact -t lang

Register Admin Menu

Edit resources/menu/admin/sidemenu.menu.php

// Contact
$menu->link('聯絡單')
    ->to($nav->to('contact_list', ['type' => 'main']))
    ->icon('fal fa-phone-volume');

Support Multiple Types

Use Route to separate types:

/admin/contact/list/{type}

Use type param in Navigator.

$nav->to('contact_list', ['type' => '{type}']);

Frontend

One MVC per type. If you want another contact form with type: foo, just generate a FooContact MVC

php windwalker g controller Admin/FooContact
php windwalker g view Admin/FooContact
php windwalker g form Admin/FooContact/Form/EditForm

And remember set type when saving in controller:

    $controller->prepareSave(
        function (PrepareSaveEvent $event) {
            $data = &$event->data;

            $data['type'] = 'foo';
        }
    );

RateLimit

Front controller has rate limit function to prevent spam. you can configure it in etc/packages/contact.config.php

    'rate_limit' => [
        // Default rate limit config
        '_default' => [
            'policy' => 'fixed_window',
            'limit' => 10,
            'interval' => '1day',
        ],
        
        // You can add different rate limit for different type
        'main' => [
            'policy' => 'fixed_window',
            'limit' => 10,
            'interval' => '1day',
        ],
    ],

If you create a new controller to save contact form, you can use rate limiter in controller:

    public function save(
        AppContext $app,
        ContactService $contactService,
        // ...
    ): mixed {
        // Set your form type
        $type = 'inquiry';
        
        // Check or throw
        $contactService->rateLimitOrThrow($type, $app->getAppRequest()->getClientIP());
        
        // Or throw yourself
        $limit = $contactService->checkRateLimit($type, $app->getAppRequest()->getClientIP());
        
        if (!$limit->isAccepted()) {
            throw new \RuntimeException('Rate limit exceeded', 429);
        }
        

    // ...

lyrasoft/contact 适用场景与选型建议

lyrasoft/contact 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 12.16k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2022 年 01 月 09 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 lyrasoft/contact 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 lyrasoft/contact 我们能提供哪些服务?
定制开发 / 二次开发

基于 lyrasoft/contact 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-01-09