2012-12-11 43 views
2

我有TYPO3擴展「Formhandler」的問題。我安裝了擴展程序,添加了驗證碼,一切正常。Formhandler主題動態字段

這是HTML模板:

<!-- ###TEMPLATE_FORM1### begin --> 
<form action="###REL_URL###" name="projektform" id="projektform" method="post" class="formhandler"> 
    <br /> 
    <div id="sender_name"> 
    <label for="sender_name"><span style="color:red;">*</span>Name:</label> 
    <br /> 
    <input type="text" name="formhandler[sender_name]" id="sender_name" 
    value="###value_sender_name###" /> 
    ###error_sender_name### 
    </div> 
<br /> 
<div id="sender_email"> 
    <label for="sender_email"><span style="color:red;">*</span>Email:</label> 
    <br /> 
    <input type="text" name="formhandler[sender_email]" id="sender_email" 
    value="###value_sender_email###" /> 
    ###error_sender_email### 
    </div> 
    <br /> 
    <div id="sender_message"> 
    <label for="message"><span style="color:red;">*</span>Message:</label> 
    <br /> 
    <textarea name="formhandler[message]" id="message">###value_message###</textarea> 
    ###error_message### 
    </div> 
    <br /> 
    <!--###CAPTCHA_INSERT### this subpart is removed if CAPTCHA is not enabled! --> 
    <div id="captcha"> 
    <label for="freecapfield"><span style="color:red;">*</span>###SR_FREECAP_NOTICE###</label> 
    <br /> 
    ###SR_FREECAP_CANT_READ### 
    <br /> 
    <div class="cap-img"> 
     ###SR_FREECAP_IMAGE### 
    </div> 
    <br /> 
    <input type="text" id="freecapfield" name="formhandler[freecapfield]" title="###SR_FREECAP_NOTICE###" value=""> 
    <br /> 
    ###error_freecapfield### 
    </div> 
    <!--###CAPTCHA_INSERT###--> 
    <br /> 
    <input type="submit" value="Submit" ###submit_nextStep### /> 
</form> 
<!-- ###TEMPLATE_FORM1### end --> 

<!-- ###TEMPLATE_SUBMITTEDOK### begin --> 
<p>The following message has been sent:</p> 
<p>###value_message###</p> 
<!-- ###TEMPLATE_SUBMITTEDOK### end --> 

<!-- ###TEMPLATE_EMAIL_ADMIN_PLAIN### begin --> 
The following contact form has been sent to you: 
Sender: ###value_sender_name### ###value_sender_email### 
Text: 
###value_message### 
<!-- ###TEMPLATE_EMAIL_ADMIN_PLAIN### end --> 

這是錯字腳本:

<INCLUDE_TYPOSCRIPT: source="FILE:fileadmin/contactform/1-contactform.ts"> 
plugin.Tx_Formhandler.settings { 
    debug = 1 
    templateFile = fileadmin/contactform/1-contactform.html 
    formValuesPrefix = formhandler 
    finishers {  
    1 {  
     class = Tx_Formhandler_Finisher_Mail 
    }  
    2 {  
     class = Tx_Formhandler_Finisher_SubmittedOK  
     config.returns = 1  
    } 
    } 
    # Rules for the validation 
    validators.1.class = Validator_Default 
    validators.1.disabled = 0 
    validators.1.config.fieldConf { 
    message.errorCheck.1 = required 
    message.errorCheck.2 = minLength 
    message.errorCheck.2.value = 5 
    sender_name.errorCheck.1 = required 
    sender_email.errorCheck.1 = required 
    sender_email.errorCheck.2 = email 
    freecapfield.errorCheck.1 = srFreecap 
    } 
    # Layout if the error message 
    singleErrorTemplate { 
    totalWrap = | 
    singleWrap = <span style="color: red;">|</span> 
    } 
} 

所以我有什麼是名稱,電子郵件,消息和驗證碼領域,完美的工作。 但是之後我想在表單中添加一個「主題」字段,這樣當有人從在線聯繫人表單發送一封電子郵件時,他將能夠設置該電子郵件的主題。 我增加了一個額外的輸入字段:

<div id="subject"> 
     <label for="subject">Subject:</label> 
    <br /> 
    <input type="text" name="formhandler[subject]" id="subject" value="###value_subject###"/> 
    </div> 

在HTML模板添加輸入後,我輸入值「SUBJECT」。其結果是,我能夠看到formhandler調試值:

The current GET/POST params are: 
sender_name  NAME 
sender_email [email protected] 
subject  SUBJECT 
message  MESSAGE 
freecapfield kdlxp 
step-2-next  1 
submitted 1 
randomID 5fab4cc19017c5c48dafb6a05ed7687b 
removeFile 
removeFileField  
submitField  

然後,所有我需要做的是「分配」是價值的「管理主題」字段。我做了很多研發的,我能夠找到下面的代碼:

plugin.Tx_Formhandler.settings.predef.myformname { 
    finishers { 
    1.class = Tx_Formhandler_Finisher_Mail 
    1.config { 
     limitMailsToUser = 5 
     admin { 
     subject = TEXT 
     subject.data = GPvar:formhandler|title 
     } 
    } 
    } 
} 

所以我把代碼在我的錯字腳本,代以「myformname」我的表「projektform」和標題用的名字我的輸入字段「主題」的名稱,但是當我發送電子郵件時,沒有主題。 我做了很多搜索,嘗試了很多例子,但結果是一樣的。你能否指點我正確的方向?

回答

0

或者你可以請使用旨在爲您實現的機制:

在您的模板中,您指定了fieldname NAME = 「formhandler [主題]」。 這意味着您的價值將被存儲在關鍵「主題」下。 大多數,如果不是全部,選手都能夠應付就這樣這個鍵/值對:

plugin.Tx_Formhandler.settings { 
    finishers { 
    1 { 
     class = Tx_Formhandler_Finisher_Mail 
     config.admin.subject = subject 
    } 
    } 
} 

也是另一個原因,你的代碼可能無法正常工作是你沒有指定你的形式使用PREDEF並將其大部分配置在預定義之外。但是您找到的主題的配置使用了predef。只需更改predef名稱是不夠的,請將配置與您的表單關聯。它必須與您的其他配置處於同一水平。這可能只是以及工作:

plugin.Tx_Formhandler.settings { 
    finishers { 
    1.class = Tx_Formhandler_Finisher_Mail 
    1.config { 
     limitMailsToUser = 5 
     admin { 
     subject = TEXT 
     subject.data = GP:formhandler|subject 
     } 
    } 
    } 
} 

旁註:即使 它是好的,不PREDEF使用(因爲你有沒有需要多個不同的形式),但不建議,你應該考慮改變你的配置使用predefs。

0

假設你的形式確實是基於PREDEF形式與鍵「projektform」上:

plugin.Tx_Formhandler.settings.predef.projektform { 
    finishers { 
     1.class = Tx_Formhandler_Finisher_Mail 
     1.config { 
      limitMailsToUser = 5 
      admin { 
       subject = TEXT 
       subject.data = GP:formhandler|subject 
       subject.sanitize = 1 
      } 
     } 
    } 
} 

如果您訪問GET /使用的CObject像「TEXT」 POST參數,你應該時時補充「的sanitize = 1" 。 Formhandler掛接到stdWrap並將提交的表單數據添加到GET/POST數組中。

更好的方式來做到這一點是通過輸入字段的只是名字@denvercoder方式建議:

plugin.Tx_Formhandler.settings.predef.projektform { 
    finishers { 
     1.class = Tx_Formhandler_Finisher_Mail 
     1.config { 
      limitMailsToUser = 5 
      admin { 
       subject = subject 
      } 
     } 
    } 
}