biswadeep/form-tool

此包已被弃用且不再维护。作者建议使用 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. 传递我们上面创建的 $model
  3. 最后一个参数是 Closure,它将提供一个 Blueprint 作为参数。

现在让我们了解Closure内部的字段。为此,让我告诉你们一件事,闭包中最多的方法第一个参数是数据库列名,第二个是该字段的可选标签。所以这里有输入字段
  1. 我们创建了一个文本字段,列名为 productName,标签为 Product Name,并应用了必要的验证。
  2. 然后是一个下拉列表,列名为 categoryId,标签为 Category,指示表单工具从另一个表 categories 获取选项,然后将 categoryIdcategoryName 用点(.)分隔作为
  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

谢谢