lintaba / laravel-fastforms
为Laravel模型提供快速表单定义,包含验证和视图
Requires
- php: >=7.0.0
- illuminate/session: >=5.0 <8.0
- illuminate/support: >=5.0 <8.0
- laravelcollective/html: >=5.7
Suggests
- barryvdh/laravel-debugbar: Helps debug unexpected missing form fillings
- barryvdh/laravel-translation-manager: Collects untranslated (autogenerated) keys
This package is auto-updated.
Last update: 2024-08-29 05:30:54 UTC
README
为Laravel模型提供快速且易于创建的表单和视图,包含验证。
设置
通过Composer安装。
composer require lintaba/laravel-fastforms
将它的特性添加到你的控制器中
<?php use Illuminate\Http\Request; use Illuminate\View\View; class ItemController { # 1. add fastform's trait use \lintaba\fastforms\HasFormTrait; # 2. set up your show, edit, update, create, store methods as needed. public function show(Item $item) : View{ $form = $this->getForm(); return view('item.show', compact('item', 'form')); } public function edit(Item $item) : View{ $form = $this->getForm(); return view('item.edit', compact('item', 'form')); } public function create() : View{ $form = $this->getForm(); return view('item.create', compact('form')); } public function update(Request $request, Item $item) { $requestData = $this->getValidInput($request, $extraValidationRules = [], $item); $item->fill($requestData); $item->save(); return redirect()->back(); } public function store(Request $request) { $requestData = $this->getValidInput($request, $extraValidationRules = []); $item= new Item; $item->fill($requestData); $item->save(); return redirect()->back(); } # 3. public function getForm($id = null){ return [ ['field'=>'name', 'type'=>'text'], //... ]; } }
对于你的视图,你应该添加以下内容
Create: @include('Fastforms::form', compact('form')) View: @include('Fastforms::view', compact('form', 'item')) Edit: @include('Fastforms::form', compact('form', 'item'))
模板选项
组件
每个表单条目可以是
- 一个字符串,作为一个分类标签。
- 一个数组,用于设置组件。
#####每个组件都有以下属性
#####大多数组件都有以下属性
#####可用的控制器类型
- address
- boolean
- button
- date
- datetime
- json
- (label)
- listarray
- matrix
- multiselect
- number
- password
- rangeRepeater
- reference
- repeater
- select
- text
- textarea
- textWithCheckbox
###选项 #####address 基于 Form::select
和 Form::text
。包含多个子字段
- country
- zip
- city
- street
- house
- extra
对于任何 field
,它的存储和检索作为 field_country
、field_zip
等。
#####boolean 基于 Form::checkbox
。
#####button 简单的HTML按钮
额外翻译
$tag . $button . '.label'
$tag . $button . '.title'
#####date 基于 Form::text
的类型 date
。需要js #TODO 数据应实现 ?DateTimeInterface
#####datetime 基于 Form::text
的类型 datetime
。需要js #TODO 数据应实现 ?DateTimeInterface
#####json 基于 Form::textarea
。根据正则规则进行验证。
#####listarray 多个基于单选按钮的选择。用于评分尺度、权限、多个是/否。
注意:如果由于某些原因当前值不存在(例如,定义已更改,但数据尚未迁移),将可见一个额外的选项,其中包含当前值。
#####matrix 复选框矩阵。存储为 field.1_2 = 1
。
#####multiselect 基于 Form::select
。多选选项。
#####number
基于 Form::text
。显示可步进的数字字段。用于增量样式数据。
#####password 基于 Form::password
。
#####rangeRepeater 列表,用于定义给定范围的值。例如,价格应为1-10公里的0,而更远的为100。注意:TODO,花哨的格式。注意:需要js。
#####reference 对外部条目的引用,基本上是一个 belongsTo
。
#####repeater 值的数组。可扩展列表。格式:item[i][subfield]
。
#####select
基于 Form::select
。
#####text 基于 Form::text
。
注意:同一时间只能有一个
prepend
、prepend_btn
可用。
注意:同一时间只能有一个
append
、append_btn
、fillfrom
可用。
翻译
$tag.$prepend_btn.'.title'
$tag.$prepend_btn.'.text'
$tag.$append_btn.'.title'
$tag.$append_btn.'.text'
#####textarea
基于 Form::textarea
#####textWithCheckbox
与 text
相同,但有一个额外的 checkbox
在末尾,仅在 text
填充了某些数据时可见。
##验证 输入数据会自动根据其 validation
属性中提供的内容进行验证。