iam-deep/form-tool

一个轻量级的Laravel表单工具,轻松创建您的管理面板或Web应用!


README

StyleCI GitHub

一个轻量级的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,参数如下:

  1. Laravel的控制器类作为$this
  2. 传递上面创建的模型
  3. 最后一个参数是闭包,它将提供一个蓝图作为参数。

现在让我们理解闭包内的字段。为此,我要告诉你一件事:闭包内的大部分方法都使用第一个参数作为数据库列名,第二个参数是可选的该字段的标签。所以这里有输入字段
  1. 我们创建了一个文本字段,列名是productName,标签是产品名称,并应用了必需的验证。
  2. 然后是一个下拉框,列名是categoryId,标签是分类,指示表单工具从另一个表categories获取选项,然后categoryIdcategoryName通过点(。)分隔,分别作为<option>标签的值和文本显示。最后,我们添加了必需的验证。
  3. 然后是一个价格字段,具有自动的数字验证,因为我们指定了它是一个数字字段,并应用了必需的验证。
  4. 然后创建了一个图像字段,它将自动应用图像文件的验证,并将图像上传到子目录public/storage/。关于文件上传的更多信息将在后面介绍。
  5. 最后,我们为描述列创建了一个默认的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;
    }
}

这将给我们

  1. 产品列表页面,具有批量操作(复制、删除)、搜索、分页、按列排序、操作(编辑、删除)

Screenshot of list page

  1. 产品创建页面,包含上面提到的所有字段

Screenshot of create page

  1. 产品编辑页面,包含上面提到的所有字段

Screenshot of edit page

  1. 产品回收站页面:此页面将包含已删除的项目。您现在可以永久删除它们。

Screenshot of CRUD trash

  1. FormTool活动:将存储所有活动,如创建了什么项目、更新了什么、复制了什么、删除了什么、恢复了什么以及永久销毁了什么。

Screenshot of activites

Screenshot of sctivities updated field

如果您理解到这里,那么您就可以开始使用这个包了,并回来查看以下文档获取帮助(我更喜欢这种方式学习新事物😉)。如果您更喜欢先阅读文档,请先阅读以下内容。

我们有许多这样的酷特性。这只是开始。如果您喜欢这个包,请通过在github给它加星标来支持它。

此包仍在积极开发中。

您可以使用此骨架包开始快速设置:form-tool-skeleton

谢谢