carlosmundaray777/jaz-form-builder

此包最新版本(dev-master)没有提供许可证信息。

Laravel 包,用于使用 jQuery 表单构建器创建拖放表单构建器

安装: 1

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

语言:JavaScript

dev-master 2021-06-17 17:20 UTC

This package is auto-updated.

Last update: 2024-09-18 00:38:21 UTC


README

注意:本包可能不兼容 Laravel 7 或 8。由于我不再维护此包,因此请将代码作为创建 jQuery 表单构建器的参考。

这是一个用于使用 JQuery 表单构建器 创建拖放表单构建器的 Laravel 包。

演示: http://demoform.carlosmundaray777.com/

注意:在演示中禁用了电子邮件、注册和文件上传等功能

截图

alt text

表单字段以 json 格式保存并存储在您的数据库中。您的网站成员可以创建、编辑和删除表单。表单属于创建它们的用户,每个表单都有一个可以公开分享的唯一链接。

可以使用表单的 json 版本来渲染用户填充的表单。

示例 Json 表单

[{"type":"header","subtype":"h1","label":"Demo Form 01"},{"type":"paragraph","subtype":"p","label":"This demo form is a potluck sign-up sheet"},{"type":"text","label":"Name","className":"form-control","name":"name","subtype":"text"},{"type":"radio-group","label":"Food Category","name":"foodcategory","other":true,"values":[{"label":"Appetizer","value":"Appetizer"},{"label":"Beverage","value":"Beverage"},{"label":"Salad","value":"Salad"},{"label":"Main","value":"Main"},{"label":"Dessert","value":"Dessert"}]},{"type":"number","label":"How many will it serve","className":"form-control","name":"numberserved","min":"1","max":"50","step":"1"},{"type":"text","label":"Dish Name","className":"form-control","name":"dishname","subtype":"text"},{"type":"checkbox-group","label":"Dietary Restrictions","description":"Which of the following does your dish contain?","name":"dietaryrestrictions","values":[{"label":"Alcohol","value":"Alcohol"},{"label":"Carbs","value":"Carbs"},{"label":"Dairy","value":"Dairy"},{"label":"Egg","value":"Egg"},{"label":"Fish","value":"Fish"},{"label":"Gluten","value":"Gluten"}]},{"type":"textarea","label":"Comment","className":"form-control","name":"comment","subtype":"textarea"}]

表单权限选项

  • 公共 - 任何人都可以提交表单,无需登录
  • 私有 - 只有您的网站认证成员才能访问表单。为用户提供编辑他们之前提交内容的选项。

要求

如果您正在寻找一个易于创建 Laravel 网站的托管网站,我强烈推荐 Cloudways。Cloudways 可以在几分钟内设置 Laravel 网站 和 MySQL 数据库。

包含在包中的依赖项

安装说明

此自定义包安装需要几个步骤,但我会尽量使其尽可能简单。

第一步

手动编辑您的 composer.json 文件或只需键入

composer require carlosmundaray777/jaz-form-builder

第二步

确保您已安装所有依赖项

composer install

注意:对于版本 5.6 及以上,此包将自动使用 Laravel 的包发现功能进行注册。这意味着您不需要更新您的 config/app.php 文件。

第三步

我们需要添加额外的数据库表,所以运行以下命令:

php artisan migrate

第四步

创建表单包的配置文件。这将在您的配置文件夹中放置一个formbuilder.php文件。在配置文件中,您可以更改包的路由URL路径、要使用的布局模板以及脚本/样式输出部分。

运行以下命令

php artisan vendor:publish --tag formbuilder-config

第五步

更新您的blade模板文件。在默认的Laravel安装中,模板文件位于此处:/resources/views/layouts/app.blade.php

您需要在blade文件的顶部添加新样式和脚本的标签,就在关闭的head标签之上。

@stack('styles')

在blade文件的底部添加新样式和脚本的标签,就在关闭的body标签之上。

@stack('scripts')

注意:如果您需要更改使用这些@stack值调用的文件,可以更新配置文件。

第六步

通过运行以下命令发布自定义blade视图文件:

php artisan vendor:publish --tag formbuilder-views

通过运行以下命令发布公共资产:

php artisan vendor:publish --tag formbuilder-public

或者您可以使用以下命令一次性发布所有内容:

php artisan vendor:publish --provider="carlosmundaray777\FormBuilder\FormBuilderServiceProvider"

第七步

为了正确链接附件,您需要运行storage:link命令,这将使存储文件夹公开可访问。

php artisan storage:link

访问应用

太棒了!您成功了!现在可以访问表单应用。 http://your.domain.com/form-builder/forms

查看提交: http://your.domain.com/form-builder/my-submissions

使用Trait

您可以在您的应用程序中访问属于用户的表单和提交。要使用Trait,请将use语句添加到您的用户模型类中。

use carlosmundaray777\FormBuilder\Traits\HasFormBuilderTraits;

class User extends Authenticatable
{
    use HasFormBuilderTraits;
}

现在您可以通过运行以下命令访问用户的表单和提交:

$user = User::first();

// get the user's forms
$user->forms;

// get the user's submissions
$user->submissions;

// or use static methods on the carlosmundaray777\FormBuilder\Models\Form class
$user_forms = Form::getForUser($user); // returns a paginated resultset

// the carlosmundaray777\FormBuilder\Models\Submission class also has a static method for getting the submissions
// that belong to a user
$my_submissions = Submission::getForUser($user); // returns a paginated resultset

使用事件

当记录被创建或更新时,该包会触发多个事件,以便您可以在应用程序逻辑中监听这些事件并执行自定义任务。

注意事项

  1. 请确保您的数据库中有一个名为users的表,并且有一个id列{bigSignedInteger}。
  2. 一旦在表单上有提交,不要尝试再次编辑表单,因为这会破坏早期提交的显示。

致谢

特别感谢Farayola Oladele,他是Fiverr上最好的Laravel程序员之一: https://www.fiverr.com/harristech 他教会了我很多,我强烈推荐他在您的Laravel项目上提供帮助。