2012-04-06 14 views
0

約2ヶ月前、私はSilverStripeのウェブサイトを2.3.5から2.4.6にアップグレードしました。アップグレード後、私のサイトのフォームの中には、管理セクションのパスワードを忘れたフォームのような "システム"フォームを含む、サブミット機能(POSTエントリは空です)にすべてのデータを送信しないものがありますadminログインフォームのパスワードフィールド)。私が奇妙に感じるのは、同じフィールドでほぼ同じ(しかし異なるコード)のフォームがあり、うまく動作しますが、フィールドをコピーしても機能しないということです。ここでSilverStripeフォームはすべてのデータを送信していませんか?

は、作業フォームとその提出するコードは次のとおりです。

function GenericContactForm() { 

    global $contactmessage; 

    // Create fields 
    $fields = new FieldSet(
      new TextField('NAME', 'Full Name:'), 
      new EmailField('EMAIL', 'Email:'), 
      new TextField('TELEPHONE', 'Work Phone:'), 
      new ListboxField(
       $name = "TYPEOFCONTACT", 
       $title = "Office Type:", 
       $source = array(
       "Single Person Office" => "Single Person Office", 
       "Team Room" => "Team Room", 
       "Open Plan" => "Open Plan" 
       ), 
       $value = 1 
      ), 
        new TextField('HUMAN', '1+1 =') 
    ); 

    // Create actions 
    $actions = new FieldSet(
      new FormAction('doGenericContact', 'Submit') 
    ); 

    return new Form($this, 'GenericContactForm', $fields, $actions); 
} 

function doGenericContact($data, $form) { 
    $human = $data['HUMAN']; 
    if ($human == '2') { 
     $from = $data['EMAIL']; 
     $to = '[email protected]'; 
     $subject = 'Contact Request'; 
     $body = 'The following individual has requested to be contacted: ' . $data['NAME'] . ' | ' . $data['EMAIL'] . ' | ' . $data['TELEPHONE'] . ' and they have made contact to inquire about the following: ' . $data['TYPEOFCONTACT']; 
     $email = new Email($from, $to, $subject, $body); 
     $email->send(); 

     Director::redirect('/thankyou/'); 
    } else { 
     $form->addErrorMessage('Message', "Incorrect answer to the human check. (Your answer: $human)", 'error'); 
     return Director::redirectBack(); 
    } 
} 

私は以来、ListboxFieldを削除しようとしました:

function ContactUsForm() { 
     // Create fields 
     $fields = new FieldSet(
         new HeaderField('Send Us a Message:', '2'), 
         new TextField('NAME', 'Full Name:'), 
         new EmailField('EMAIL', 'E-mail Address:'), 
         new TextField('PHONE', 'Phone:'), 
         new TextField('COMPANYNAME', 'Company Name:'), 
         new TextareaField('MESSAGE', 'Message/Note:'), 
         new TextField('HUMAN', '1+1 =') 
     ); 

     // Create actions 
     $actions = new FieldSet(
         new FormAction('doContactUs', 'Submit') 
     ); 

     return new Form($this, 'ContactUsForm', $fields, $actions); 
    } 

    function doContactUs($data, $form) { 

     $human = $data['HUMAN']; 
     if ($human == '2') { 
      $from = '[email protected]'; 
      $to = '[email protected]'; 
      $subject = 'General Contact Submission'; 
      $body = $data['NAME'] . ' has submitted a General Inquiry, their info: ' . $data['NAME'] . ' | ' . $data['EMAIL'] . ' | ' . $data['PHONE'] . ' | ' . $data['COMPANYNAME'] . ' and they have included the following note (if they included a note): ' . $data['MESSAGE']; 
      $email = new Email($from, $to, $subject, $body); 
      $email->send(); 


      Director::redirect('thankyou/'); 
     } else { 
      $form->addErrorMessage('Message', 'Incorrect answer to the human check.','error'); 
      return Director::redirectBack(); 
     } 
    } 

ここでは動作しない形、及びその提出するコードですそれは私が見つけた唯一の違いです。また、submit関数のif文の真の部分のすべてを取り除いてローカルでテストしようとしましたが、ローカルでは動作しますが、サーバー上では動作しません。これはSilverStripeとサーバーの設定(私はサーバーへのアクセスが制限されています)。さらに、これらのフォームはアップグレードの前に機能していました。

これを引き起こしていることに関するアイデア、それを修正するために何ができるのですか?

編集 - 追加のトラブルシューティングでは、ポストアレイにデータがないことが判明しました。

+0

あなたは「自分のサイトのフォームの一部がすべてのデータを送信しない」と述べています。実際の問題点を明確にしてください。フォームは電子メールを送信していないか、電子メールを送信していますが、フィールドデータはありませんか? – ryanwachtl

+0

@ryanwachtl - それは人間の小切手を過ぎて行っていないので、電子メールコードにすることさえできません。 "人間の" POST変数は空です。 – Shauna

+0

コードの中にフォームが機能しないようなことはありません。 'doGenericContact()'の中で 'Debug :: show($ data)'を使って、フォームから何が送信されているかを見てみましょう。 '$ data ['HUMAN']'が値を持っていることを確認したら、あなたの電子メールサーバが自分以外のドメインからのものとして電子メールを送信することを確認します。問題はサーバーの電子メールの設定に関連し、SilverStripeに関連するものではないと感じています。 – ryanwachtl

答えて

0

これは、SilverStripe 2.4のモジュールとhowのやり方の問題であることが判明しました。私はそれを解決した人ではなかったので、問題の詳細はわかりませんが、モジュール2.4が期待しているものに合わせてモジュールを導入することで修正されました。

関連する問題