Parser erro
Wuvist opened this issue · 1 comments
Wuvist commented
@{
import (
"zfw/models"
. "zfw/tplhelper"
"dm"
)
var obj *models.Widget
}
@{
data, dmType := dm.GetData(obj.PlaceHolder)
if dmType == "simple" {
obj.StringList = data.([]string)
<div>@raw(SelectPk(obj))</div>
} else {
node := data.(*dm.DMTree)
<div class="form-group @GetErrorClass(obj)">
<label for="@obj.Name" class="col-sm-2 control-label">@obj.Label</label>
<div class="col-sm-10">
<select class="form-control" name="@obj.Name" @BoolStr(obj.Disabled, "disabled")>
@for _, option := range node.Keys{
if option == obj.Value{
<option selected>@option</option>
}else{
<option>@option</option>
}
}
</select>
@if obj.ErrorMsg != "" {
<span class="label label-danger">@obj.ErrorMsg</span>
}
</div>
</div>
}
}
Wuvist commented
make it more complicated
@{
import (
"zfw/models"
. "zfw/tplhelper"
"dm"
)
var obj *models.Widget
}
@{
data, dmType := dm.GetData(obj.PlaceHolder)
if dmType == "simple" {
obj.StringList = data.([]string)
<div>@raw(SelectPk(obj))</div>
} else {
node := data.(*dm.DMTree)
<div class="form-group @GetErrorClass(obj)">
<label for="@obj.Name" class="col-sm-2 control-label">@obj.Label</label>
<div class="col-sm-10">
<select class="form-control" name="@obj.Name" @BoolStr(obj.Disabled, "disabled")>
@for _, option := range node.Keys{
if values, ok := node.Values[option]; ok {
<optgroup label="@option">
@for _, value := range values{
if value == obj.Value{
<option selected>@value</option>
}else{
<option>@value</option>
}
}
</optgroup>
} else {
if option == obj.Value{
<option selected>@option</option>
}else{
<option>@option</option>
}
}
}
</select>
@if obj.ErrorMsg != "" {
<span class="label label-danger">@obj.ErrorMsg</span>
}
</div>
</div>
}
}
and it should output
package html
import (
"bytes"
"dm"
"github.com/sipin/gorazor/gorazor"
"zfw/models"
. "zfw/tplhelper"
)
func Dm(obj *models.Widget) string {
var _buffer bytes.Buffer
data, dmType := dm.GetData(obj.PlaceHolder)
if dmType == "simple" {
obj.StringList = data.([]string)
_buffer.WriteString("<div>")
_buffer.WriteString((SelectPk(obj)))
_buffer.WriteString("</div>")
} else {
node := data.(*dm.DMTree)
_buffer.WriteString("<div class=\"form-group ")
_buffer.WriteString(gorazor.HTMLEscape(GetErrorClass(obj)))
_buffer.WriteString("\">\n <label for=\"")
_buffer.WriteString(gorazor.HTMLEscape(obj.Name))
_buffer.WriteString("\" class=\"col-sm-2 control-label\">")
_buffer.WriteString(gorazor.HTMLEscape(obj.Label))
_buffer.WriteString("</label>\n <div class=\"col-sm-10\">\n <select class=\"form-control\" name=\"")
_buffer.WriteString(gorazor.HTMLEscape(obj.Name))
_buffer.WriteString("\" ")
_buffer.WriteString(gorazor.HTMLEscape(BoolStr(obj.Disabled, "disabled")))
_buffer.WriteString(">\n ")
for _, option := range node.Keys {
if values, ok := node.Values[option]; ok {
_buffer.WriteString("<optgroup label=\"")
_buffer.WriteString(gorazor.HTMLEscape(option))
_buffer.WriteString("\">\n ")
for _, value := range values {
if value == obj.Value {
_buffer.WriteString("<option selected>")
_buffer.WriteString(gorazor.HTMLEscape(value))
_buffer.WriteString("</option>")
} else {
_buffer.WriteString("<option>")
_buffer.WriteString(gorazor.HTMLEscape(value))
_buffer.WriteString("</option>")
}
}
_buffer.WriteString("\n </optgroup>")
} else {
if option == obj.Value {
_buffer.WriteString("<option selected>")
_buffer.WriteString(gorazor.HTMLEscape(option))
_buffer.WriteString("</option>")
} else {
_buffer.WriteString("<option>")
_buffer.WriteString(gorazor.HTMLEscape(option))
_buffer.WriteString("</option>")
}
}
}
_buffer.WriteString("\n </select>\n ")
if obj.ErrorMsg != "" {
_buffer.WriteString("<span class=\"label label-danger\">")
_buffer.WriteString(gorazor.HTMLEscape(obj.ErrorMsg))
_buffer.WriteString("</span>")
}
_buffer.WriteString("\n </div>\n</div>\n\n ")
}
return _buffer.String()
}