2012-12-11 2 views
2

TYPO3 확장 "Formhandler"에 문제점이 있습니다. 확장 프로그램을 설치하고 captcha를 추가했는데 모든 것이 작동합니다.양식 핸들러 주제 동적 필드

<!-- ###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 --> 

이것은 오타 스크립트는 다음과 같습니다 :

은 HTML 템플릿입니다

<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> 
    } 
} 

그래서 내가 무엇을 가지고 이름, 이메일, 메시지와 완벽하게 작동하는 보안 문자 필드. 그러나 양식에 "제목"필드를 추가하여 온라인 문의 양식에서 전자 메일을 보내면 해당 전자 메일 제목을 설정할 수 있습니다. 내가 추가 입력 필드 추가 : HTML 템플릿에 입력을 추가 한 후

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

을, 나는 값 "제목"을 입력. 결과는 내가 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 
     } 
    } 
    } 
} 

그래서 내 형성과 함께 "projektform"제목의 이름으로 "myformname을"대체 내 오타 스크립트 코드를 넣어 내 입력란 "제목"의 이름이지만 이메일을 보낼 때 제목이 없습니다. 많은 검색을 수행하고 많은 예제를 시도했지만 결과는 동일했습니다. 올바른 방향으로 나를 가르쳐 주시겠습니까?

답변

0
+1

답변에 링크 된 페이지의 주요 사항을 요약 고려; 보시다시피, 링크 된 리소스의 URL이 변경되면 링크 전용 답변이 쓸모 없게됩니다. – lfurini

+0

@ lfurini 나는 이것이 실제로 LeondeRijke의 대답에 대해 논평하려는 시도라고 생각한다. 그 대답에 대한 올바른 링크를 편집했습니다. – josliber

0

아니면 수에 우연히있다

템플릿에 다음과 같이 fieldname을 지정했습니다. 이름 = "formhandler [주체]". 이것은 값이 "subject"키 아래에 저장됨을 의미합니다. 대부분은, 전부는 아니더라도, 인화는이 같은이 키/값 쌍을 처리 할 수 ​​있습니다 :

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

또한 코드가 작동하지 않을 수 있습니다 또 다른 이유는 당신이 PREDEF를 사용하도록 양식을 지정하지 않은 것입니다 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.당신이 얻을에 액세스하는 경우

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 
      } 
     } 
    } 
} 

가/"TEXT"같은 cObject을 사용하여 POST 매개 변수, 당신은 항상 추가해야 "살균 :

0

양식이 정말 키"projektform "와 PREDEF 양식을 기반으로 가정하면 = 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 
      } 
     } 
    } 
}