iam-deep / form-tool
一个轻量级的Laravel表单工具,轻松创建您的管理面板或Web应用!
v3.0.43
2024-09-29 17:39 UTC
Requires
- php: ^8.1
- intervention/image: ^2.7.2
- dev-main
- v3.0.43
- v3.0.42
- v3.0.41
- v3.0.40
- v3.0.39
- v3.0.38
- v3.0.37
- v3.0.36
- v3.0.35
- v3.0.34
- v3.0.33
- v3.0.32
- v3.0.31
- v3.0.30
- v3.0.29
- v3.0.28
- v3.0.27
- v3.0.26
- v3.0.25
- v3.0.24
- v3.0.23
- v3.0.22
- v3.0.21
- v3.0.20
- v3.0.19
- v3.0.18
- v3.0.17
- v3.0.16
- v3.0.15
- v3.0.14
- v3.0.13
- v3.0.12
- v3.0.11
- v3.0.10
- v3.0.9
- v3.0.8
- v3.0.7
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.0.30
- v2.0.29
- v2.0.28
- v2.0.27
- v2.0.26
- v2.0.25
- v2.0.24
- v2.0.23
- v2.0.22
- v2.0.21
- v2.0.20
- v2.0.19
- v2.0.18
- v2.0.17
- v2.0.16
- v2.0.15
- v2.0.14
- v2.0.13
- v2.0.12
- v2.0.11
- v2.0.10
- v2.0.9
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- 1.0.0
- dev-php-7.4
This package is auto-updated.
Last update: 2024-09-29 17:40:20 UTC
README
一个轻量级的Laravel表单工具,轻松创建您的Web应用或管理面板!
轻松创建复杂的CRUD,节省时间。创建无bug的代码,自信交付。
我喜欢示例,让我们直接进入正题
$model = new DataModel();
$model->db('products', 'productId');
$this->crud = Doc::create($this, $model, function (BluePrint $input) {
$input->text('productName', 'Product Name')->required();
$input->select('categoryId', 'Category')->options('categories.categoryId.categoryName')->required();
$input->number('price', 'Price')->required();
$input->image('image', 'Image');
$input->editor('description', 'Description');
});
让我来解释
让我们假设我们有一个数据库,其中有一个名为products
的产品表,包含列 productId, productName, categoryId, price, image, description
。还有一个名为categories
的分类表,包含列 categoryId, categoryName
首先,我们创建了一个$model = new DataModel();
,并在第二行中传递了产品表的表名和主键ID。这是我们告诉表单工具这是一个CRUD表的最简单方式。
然后,我们通过调用Doc::create()
创建一个CRUD,参数如下:
- Laravel的控制器类作为$this
- 传递上面创建的模型
- 最后一个参数是闭包,它将提供一个蓝图作为参数。
现在让我们理解闭包内的字段。为此,我要告诉你一件事:闭包内的大部分方法都使用第一个参数作为数据库列名,第二个参数是可选的该字段的标签。所以这里有输入字段
- 我们创建了一个文本字段,列名是
productName
,标签是产品名称
,并应用了必需的验证。 - 然后是一个下拉框,列名是
categoryId
,标签是分类
,指示表单工具从另一个表categories
获取选项,然后categoryId
和categoryName
通过点(。)分隔,分别作为<option>
标签的值和文本显示。最后,我们添加了必需的验证。 - 然后是一个价格字段,具有自动的数字验证,因为我们指定了它是一个数字字段,并应用了必需的验证。
- 然后创建了一个图像字段,它将自动应用图像文件的验证,并将图像上传到子目录
public/storage/
。关于文件上传的更多信息将在后面介绍。 - 最后,我们为描述列创建了一个默认的
CKEditor
编辑器。
完整代码
<?php
namespace App\Http\Controllers\Admin;
use Deep\FormTool\Core\Doc;
use Deep\FormTool\Core\BluePrint;
use Deep\FormTool\Core\DataModel;
class ProductsController extends AdminController
{
// Required for FormTool
public $title = 'Products';
public $route = 'products';
public $singularTitle = 'Product';
protected $crud = null;
protected function setup()
{
$model = new DataModel();
$model->db('products', 'productId');
$this->crud = Doc::create($this, $model, function (BluePrint $input) {
$input->text('productName', 'Product Name')->required();
$input->select('categoryId', 'Category')->options('categories.categoryId.categoryName')->required();
$input->number('price', 'Price')->required();
$input->image('image', 'Image');
$input->editor('description', 'Description');
});
return $this->crud;
}
}
这将给我们
- 产品列表页面,具有批量操作(复制、删除)、搜索、分页、按列排序、操作(编辑、删除)
- 产品创建页面,包含上面提到的所有字段
- 产品编辑页面,包含上面提到的所有字段
- 产品回收站页面:此页面将包含已删除的项目。您现在可以永久删除它们。
- FormTool活动:将存储所有活动,如创建了什么项目、更新了什么、复制了什么、删除了什么、恢复了什么以及永久销毁了什么。
如果您理解到这里,那么您就可以开始使用这个包了,并回来查看以下文档获取帮助(我更喜欢这种方式学习新事物😉)。如果您更喜欢先阅读文档,请先阅读以下内容。
我们有许多这样的酷特性。这只是开始。如果您喜欢这个包,请通过在github给它加星标来支持它。
此包仍在积极开发中。
您可以使用此骨架包开始快速设置:form-tool-skeleton
谢谢