func (f FormFor) FileTag(field string, opts tags.Options) *tags.Tag {
	f.buildOptions(field, opts)
	f.addFormatTag(field, opts)
	return f.Form.FileTag(opts)
}
FileTag creates a input[type=file] for a field name passed
package form
import (
	"database/sql/driver"
	"fmt"
	"reflect"
	"regexp"
	"strconv"
	"strings"
	"sync"
	"github.com/gobuffalo/flect"
	"github.com/gobuffalo/tags"
	"github.com/gobuffalo/uuid"
	"github.com/gobuffalo/validate"
)
var arrayFieldRegExp = regexp.MustCompile("^([A-Za-z0-9]+)\\[(\\d+)\\]$")
type FormFor struct {
	*Form
	Model      interface{}
	name       string
	dashedName string
	reflection reflect.Value
	Errors     *validate.Errors
}
func NewFormFor(model interface{}, opts tags.Options) *FormFor {
	rv := reflect.ValueOf(model)
	if rv.Kind() == reflect.Ptr {
		rv = rv.Elem()
	}
	name := rv.Type().Name()
	dashedName := flect.Dasherize(name)
	if opts["id"] == nil {
		opts["id"] = fmt.Sprintf("%s-form", dashedName)
	}
	errors := loadErrors(opts)
	delete(opts, "errors")
	return &FormFor{
		Form:       New(opts),
		Model:      model,
		name:       name,
		dashedName: dashedName,
		reflection: rv,
		Errors:     errors,
	}
}
func loadErrors(opts tags.Options) *validate.Errors {
	errors := validate.NewErrors()
	if opts["errors"] != nil {
		switch t := opts["errors"].(type) {
		default:
			fmt.Printf("Unexpected errors type %T, please\n", t)  
		case map[string][]string:
			errors = &validate.Errors{
				Errors: opts["errors"].(map[string][]string),
				Lock:   new(sync.RWMutex),
			}
		case *validate.Errors:
			errors = opts["errors"].(*validate.Errors)
		}
	}
	return errors
}
func (f FormFor) CheckboxTag(field string, opts tags.Options) *tags.Tag {
	f.buildOptions(field, opts)
	return f.Form.CheckboxTag(opts)
}
func (f FormFor) InputTag(field string, opts tags.Options) *tags.Tag {
	f.buildOptions(field, opts)
	f.addFormatTag(field, opts)
	return f.Form.InputTag(opts)
}
func (f FormFor) HiddenTag(field string, opts tags.Options) *tags.Tag {
	f.buildOptions(field, opts)
	return f.Form.HiddenTag(opts)
}