laravel 的form 对象 有magic方法 可以快速添加表单项
/**
* Class Form.
*
* @method Field\Text text($name, $label = '')
* @method Field\Password password($name, $label = '')
* @method Field\Checkbox checkbox($name, $label = '')
* @method Field\CheckboxButton checkboxButton($name, $label = '')
* @method Field\CheckboxCard checkboxCard($name, $label = '')
* @method Field\Radio radio($name, $label = '')
* @method Field\RadioButton radioButton($name, $label = '')
* @method Field\RadioCard radioCard($name, $label = '')
* @method Field\Select select($name, $label = '')
* @method Field\MultipleSelect multipleSelect($name, $label = '')
* @method Field\Textarea textarea($name, $label = '')
* @method Field\Hidden hidden($name, $label = '')
* @method Field\Id id($name, $label = '')
* @method Field\Ip ip($name, $label = '')
* @method Field\Url url($name, $label = '')
* @method Field\Color color($name, $label = '')
* @method Field\Email email($name, $label = '')
* @method Field\Mobile mobile($name, $label = '')
* @method Field\Slider slider($name, $label = '')
* @method Field\File file($name, $label = '')
* @method Field\Image image($name, $label = '')
* @method Field\Date date($name, $label = '')
* @method Field\Datetime datetime($name, $label = '')
* @method Field\Time time($name, $label = '')
* @method Field\Year year($column, $label = '')
* @method Field\Month month($column, $label = '')
* @method Field\DateRange dateRange($start, $end, $label = '')
* @method Field\DateTimeRange dateTimeRange($start, $end, $label = '')
* @method Field\TimeRange timeRange($start, $end, $label = '')
* @method Field\Number number($name, $label = '')
* @method Field\Currency currency($name, $label = '')
* @method Field\SwitchField switch($name, $label = '')
* @method Field\Display display($name, $label = '')
* @method Field\Rate rate($name, $label = '')
* @method Field\Divider divider($title = '')
* @method Field\Decimal decimal($column, $label = '')
* @method Field\Html html($html)
* @method Field\Tags tags($column, $label = '')
* @method Field\Icon icon($column, $label = '')
* @method Field\Captcha captcha($column, $label = '')
* @method Field\Listbox listbox($column, $label = '')
* @method Field\Table table($column, $label, $builder)
* @method Field\Timezone timezone($column, $label = '')
* @method Field\KeyValue keyValue($column, $label = '')
* @method Field\ListField list($column, $label = '')
* @method mixed handle(Request $request)
*/
真实调用的方法
/**
* Generate a Field object and add to form builder if Field exists.
*
* @param string $method
* @param array $arguments
*
* @return Field|$this
*/
public function __call($method, $arguments)
{
if (!$this->hasField($method)) {
return $this;
}
$class = BaseForm::$availableFields[$method];
$field = new $class(Arr::get($arguments, 0), array_slice($arguments, 1));
return tap($field, function ($field) {
$this->pushField($field);
});
}