3

TYPO3拡張機能「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@MAIL.COM
subject     SUBJECT
message     MESSAGE
freecapfield    kdlxp
step-2-next     1
submitted   1
randomID    5fab4cc19017c5c48dafb6a05ed7687b
removeFile  
removeFileField     
submitField     

次に、その値を「adminsubject」フィールドに「割り当てる」だけで済みました。私は多くの調査を行い、次のコードを見つけることができました。

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」に、titleを入力フィールドの名前「subject」に置き換えましたが、メールを送信するときに件名がありません。私はたくさんの検索をし、たくさんの例を試しましたが、結果は同じでした。正しい方向を教えていただけませんか。

4

4 に答える 4

6

GPvar の使用は非推奨です。代わりに GP を使用してください。

subject.data = GP:formhandler|subject

詳細については、このハウツーを参照してください: TypoScript で Formhandler 値にアクセスする方法

于 2012-12-26T14:24:08.157 に答える
0

または、それを行うためのメカニズムを使用することもできます。

テンプレートでは、フィールド名を name="formhandler[subject]" で指定しました。これは、値がキー「件名」の下に保存されることを意味します。すべてではないにしても、ほとんどのフィニッシャーは、このキーと値のペアを次のように処理できます。

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

また、コードが機能しないもう 1 つの理由は、事前定義を使用するようにフォームを指定せず、そのほとんどを事前定義の外で構成したことです。しかし、あなたが見つけたサブジェクトの設定は 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 を使用するように変更することを検討する必要があります。

于 2015-07-23T12:05:44.563 に答える
0

あなたのフォームが実際にキー「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
            }
        }
    }
}

「TEXT」などの cObject を使用して GET/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
            }
        }
    }
}
于 2015-07-24T08:56:43.013 に答える
0

リンクはhttp://www.typo3-formhandler.com/en/blog/howtos/how-to-access-formhandler-values/に少しチャンスがあります

于 2015-06-05T17:37:12.283 に答える