# 表单

Laravel版本的表单稍稍与TP不同,针对不同表单的字段类型做了区分,更加语义化,使用起来会更加方便。那么下面看看提供了哪些字段类型。

# Area

Area::make(string $name, string $title, array $props = [])

# Avatar

Avatar::make(string $name, string $title, string $action, bool $auth = true)

# Date

Date::make(string $name, string $title)

需要范围时间

Date::make(string $name, string $title)->range()

# DateTime

DateTime::make(string $name, string $title)

需要范围时间

DateTime::make(string $name, string $title)->range()

# Text

Text::make(string $name, string $title);

text 类型支持 input 框

# Email

Email::make(string $name, string $title);

# FileUpload

FileUpload::make(string $name, string $title, string $action, bool $auth = true)

# 单文件上传

FileUpload::make(string $name, string $title, string $action, bool $auth = true)->signle()

# ImageUpload

ImageUpload::make(string $name, string $title, string $action, bool $auth = true)

# 单图上传

ImageUpload::make(string $name, string $title, string $action, bool $auth = true)->signle()

# Password

Password::make(string $name, string $title);

# Url

Url::make(string $name, string $title);

# TextArea

TextArea::make(string $name, string $title);

# Boolean

Boolean::make(string $name, string $title);

# Number

Number::make(string $name, string $title);

# Select

Select::make(string $name, string $title, array|Collection $options)

# SelectMultiple

SelectMultiple::make(string $name, string $title, array|Collection $options)

# Editor

Editor::make(string $name, string $title)

# Tree

Tree::make(string $name, string $title)

# 验证

  • validateStr: 字符串
  • validateArr: 数组
  • validateNum: 数字类型
  • validateDate: 日期类型
  • validateInt: 整型
  • validateFloat: 浮点数
  • validateObject: 对象
  • validateEmail: 邮箱
  • validateEnum: enum
  • validateUrl: URL
  • validateHex
  • validatePattern: 正则验证
  • validateAlpha: 必须为纯字母
  • validateAlphaNum: 必须为字母和数字
  • validateAlphaDash: 必须为字母和数字,下划线_及破折号-
  • validateMobile: 手机号
  • validateIdCard: 身份证
  • validateZip: 邮政编码
  • validateIp: ip 地址
  • validateLandLine: 座机格式
  • validatePassword: 以字母开头,长度在6~18之间,只能包含字母、数字和下划线
  • validateStrongPassword: 必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-20之间
  • validateChineseCharacter: 必须为纯汉字

除了直接调用这些验证方法外,还额外提供更加方便的方式做验证. 例如

Text::make('mobile', 手机号)->validate('string|mobile')

如果需要多个验证使用 | 隔开。 下面的的 key 代表可用的验证字符

'string' => ValidateFactory::validateStr(),
'array' => ValidateFactory::validateArr(),
'number' => ValidateFactory::validateNum(),
'date' => ValidateFactory::validateDate(),
'int' => ValidateFactory::validateInt(),
'float' => ValidateFactory::validateFloat(),
'object' => ValidateFactory::validateObject(),
'email' => ValidateFactory::validateEmail(),
'enum' => ValidateFactory::validateEnum(),
'url' => ValidateFactory::validateUrl(),
'hex' => ValidateFactory::validateHex(),
'alpha' => ValidateFactory::validateAlpha(),
'alphaNum' => ValidateFactory::validateAlphaNum(),
'alphaDash' => ValidateFactory::validateAlphaDash(),
'mobile' => ValidateFactory::validateMobile(),
'idCard' => ValidateFactory::validateIdCard(),
'zip' => ValidateFactory::validateZip(),
'ip' => ValidateFactory::validateIp(),
'landLine' => ValidateFactory::validateLandLine(),
'password' => ValidateFactory::validatePassword(),
'strongPassword' => ValidateFactory::validateStrongPassword(),
'chinese' => ValidateFactory::validateChineseCharacter(),

# 事件

  • beforeSave 保存前
  • afterSave 保存后
  • beforeUpdate 更新前
  • afterUpdate 更新后
  • beforeDestroy 删除前
  • afterDestroy 删除后

如果表单需要在保存前做某些事情的话,那么可以这么做。

$form = new CatchFom;

$form->beforeSave(function($form){
    // todo something
})

其他事件也是类似。其实这样的事件可以用模型事件代替,一样可以达到效果, 看个人选择了。除了以上这几个事件外,还提供了

  • prepare 这个事件主要用于验证数据,这个事件是在注入时便运行了。所以它是在上面几个事件前执行的。

# 🔧 额外的非常有用的 API

# when(bool $condition, $callback)

当满足 condition 时,执行 callback

$form->when(true, function($form){
    // todo something
})

# getData()

$form->getData()

这个访问可以获取表单的数据。例如表单数据是下面的数据

return [
    'best' => 'catchadmin'
]

通过 getData 你可以获取到这个数组。如果需要获取某个字段。可以这样

$form->best

OR

$form['best']

# setData(array $data)

如果表单的数据不足以满足保存时,需要添加额外的数据,那么可以用 setData 补充额外的数据

$form->setData($data);

# getCondition()

获取模型查询的条件

$form->getCondition()

# setCondition(array $data)

设置模型查询的条件

$form->setCondition()

# getModel()

获取当前 Form 使用的模型

$form->getModel()

# getPrimaryKeyValue()

获取模型的主键值

$form->getPrimaryKeyValue()