2016-08-18 87 views
1

我在銀條紋中創建了一個前端表單。它的工作原理是記錄數據,如果有任何錯誤,它會重新導向並不保存數據。然而,我面臨的問題是驗證信息無法正確顯示。當我使用$Form變量在前端顯示錶單時,驗證和一切工作正常。我想要做的是使用<% control Form %>控制表單的佈局。這是因爲表格的設計原因。銀條紋:自定義表單模板 - 驗證問題

這裏是我的代碼:

(Template.ss)

<% control Form %> 
    <form class="wrap" $FormAttributes> 
     <% if $Message %> 
      <p id="{$FormName}_error" class="message $MessageType">$Message</p> 
     <% else %> 
      <p id="{$FormName}_error" class="message $MessageType" style="display: none"></p> 
      <% end_if %> 
      <fieldset> 
       <div class="member-details col lg-mobile-12 tablet-6 sm-desktop-6 md-desktop-6"> 
        <% if ModTest == 'false' %> 
         <div class="field wrap"> 
          <% control $Fields.dataFieldByName(ClientName) %> 
           <label class="title">$Title</label>$Field 
            <% end_control %> 
           </div> 
          <% end_if %> 
          <div class="field wrap"> 
           <% control $Fields.dataFieldByName(FirstName) %> 
            <label class="title">$Title</label>$Field 
           <% end_control %> 
          </div> 
          <div class="field wrap"> 
           <% control $Fields.dataFieldByName(Surname) %> 
            <label class="title">$Title</label>$Field 
           <% end_control %> 
          </div> 
          <% if $Fields.dataFieldByName(Address) %> 
           <div class="field address wrap"> 
            <% control $Fields.dataFieldByName(Address) %> 
             <label class="title">$Title</label> 
            <% end_control %> 
            <div class="address-fields wrap"> 
             $Fields.dataFieldByName(Address) 
             $Fields.dataFieldByName(Suburb) 
             $Fields.dataFieldByName(State) 
             $Fields.dataFieldByName(PostCode) 
            </div> 
           </div> 
          <% end_if %> 

          <% control $Fields.dataFieldByName(Phone) %> 
           <div class="field wrap"> 
             <label class="title">$Title</label>$Field 
           </div> 
          <% end_control %> 

          <% control $Fields.dataFieldByName(Email) %> 
           <div id="$HolderID" class="field wrap <% if $extraClass %> $extraClass<% end_if %>"> 
            <label class="title" for="$ID">$Title</label> 
            $Field 
            <% if $Message %><span class="message $MessageType">$Message</span><% end_if %> 
           </div> 
          <% end_control %> 

         </div> 
         <div class="password col lg-mobile-12 tablet-6 sm-desktop-6 md-desktop-6"> 
          <div class="field confirmedpassword"> 
           $Fields.dataFieldByName(Password)     
          </div> 
         </div> 
         $Fields.dataFieldByName(SecurityID) 
        </fieldset> 
        <div class="col lg-mobile-12 tablet-12 sm-desktop-12 md-desktop-12"> 
         <% if $Actions %> 
         <div class="Actions"> 
          <% loop $Actions %> 
           $Field 
          <% end_loop %> 
         </div> 
         <% end_if %> 
        </div> 
       </form> 
      <% end_control %> 

回答

1

將模板中的所有表單標記寫入模板 - 正如您所做的那樣 - 幾乎違背了表單呈現和模板的用途。它也非常不靈活,因爲您必須在模板中添加新添加的字段,而不是將它們添加到表單中。

就個人而言,我會利用CompositeField將您的字段(例如包裝多個字段的字段)分組,並在需要自定義模板的字段上使用setTemplate

我認爲你應該可以通過自定義模板和複合字段獲得與你的模板非常相似的輸出。這樣你就可以在你的模板中放下$Form並且很開心......

+0

謝謝。我會着眼於此。 – Dallby

1

要在您需要與每個字段對象的工作每場水平得到消息。

<% with $Fields.dataFieldByName(Name) %> 
    <div> 
     <label>Name</label> 
     <input name="Name" type="text" id="name" placeholder="Name" required> 
     <% if $Message %><span>$Message</span><% end_if %> 
    </div> 
<% end_with %> 

添加$Debug裏面有會列出哪些領域,這是添加CSS ID和其他CMS控制的文本有用的可用。

+0

感謝您的回覆。當我這樣做時(請參閱上面的電子郵件字段),當出現錯誤時輸出消息。但是,當我修復錯誤並保存表單時,數據保存但錯誤消息仍然存在並且不會消失... – Dallby