Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
张磊
/
FileStorageBeego
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
1b3e7de4
authored
2014-10-20 17:49:16 +0800
by
WithGJR
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
add new feature to 'renderform' function, user could add HTML id and class now
1 parent
efc14a1e
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
8 additions
and
6 deletions
templatefunc.go
templatefunc.go
View file @
1b3e7de
...
...
@@ -368,23 +368,23 @@ func RenderForm(obj interface{}) template.HTML {
fieldT
:=
objT
.
Field
(
i
)
label
,
name
,
fType
,
ignored
:=
parseFormTag
(
fieldT
)
label
,
name
,
fType
,
i
d
,
class
,
i
gnored
:=
parseFormTag
(
fieldT
)
if
ignored
{
continue
}
raw
=
append
(
raw
,
renderFormField
(
label
,
name
,
fType
,
fieldV
.
Interface
()))
raw
=
append
(
raw
,
renderFormField
(
label
,
name
,
fType
,
fieldV
.
Interface
()
,
id
,
class
))
}
return
template
.
HTML
(
strings
.
Join
(
raw
,
"</br>"
))
}
// renderFormField returns a string containing HTML of a single form field.
func
renderFormField
(
label
,
name
,
fType
string
,
value
interface
{})
string
{
func
renderFormField
(
label
,
name
,
fType
string
,
value
interface
{}
,
id
string
,
class
string
)
string
{
if
isValidForInput
(
fType
)
{
return
fmt
.
Sprintf
(
`%v<input
name="%v" type="%v" value="%v">`
,
label
,
name
,
fType
,
value
)
return
fmt
.
Sprintf
(
`%v<input
id="%v" class="%v" name="%v" type="%v" value="%v">`
,
label
,
id
,
class
,
name
,
fType
,
value
)
}
return
fmt
.
Sprintf
(
`%v<%v
name="%v">%v</%v>`
,
label
,
fType
,
name
,
value
,
fType
)
return
fmt
.
Sprintf
(
`%v<%v
id="%v" class="%v" name="%v">%v</%v>`
,
label
,
fType
,
id
,
class
,
name
,
value
,
fType
)
}
// isValidForInput checks if fType is a valid value for the `type` property of an HTML input element.
...
...
@@ -400,12 +400,14 @@ func isValidForInput(fType string) bool {
// parseFormTag takes the stuct-tag of a StructField and parses the `form` value.
// returned are the form label, name-property, type and wether the field should be ignored.
func
parseFormTag
(
fieldT
reflect
.
StructField
)
(
label
,
name
,
fType
string
,
ignored
bool
)
{
func
parseFormTag
(
fieldT
reflect
.
StructField
)
(
label
,
name
,
fType
string
,
i
d
string
,
class
string
,
i
gnored
bool
)
{
tags
:=
strings
.
Split
(
fieldT
.
Tag
.
Get
(
"form"
),
","
)
label
=
fieldT
.
Name
+
": "
name
=
fieldT
.
Name
fType
=
"text"
ignored
=
false
id
=
fieldT
.
Tag
.
Get
(
"id"
)
class
=
fieldT
.
Tag
.
Get
(
"class"
)
switch
len
(
tags
)
{
case
1
:
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment