2016-08-30 6 views
0

SilverStripeではフォームからデータベースにデータを渡す必要がありますが、「送信」ボタンをクリックすると、空白のフィールドを含むフォームが再ロードされますデータはdbです。ここではフォームファイルのコードは、(それがここでコードタグにペーストするには長すぎるのです)です:http://pastebin.com/KHnZug9Zフォームのデータを保存する、Silverstripe

とそれがDataObjectのファイルがどのように見えるかです:

/** 
* Class MonthlyReviewRequest 
*/ 

class MonthlyReviewRequest extends DataObject { 

    protected $controller; 
    protected $record; 

    private static $db = array(
     'NameAndSpecialisation' => 'Varchar(255)', 
     'MBRDate'    => 'Date', 
     'PredictionCompaniesAdded'  => 'Int', 
     'PredictionManagersAdded'   => 'Int', 
     'PredictionCandidatesAdded'  => 'Int', 
     'PredictionSendoutsDone'   => 'Int', 
     'PredictionLivejobsPerm_Con'  => 'Int', 
     'PredictionMailshotsDone'   => 'Int', 
     'Prediction1stInterview'   => 'Int', 
     'Prediction2ndInterview'   => 'Int', 
     'PredictionAddsAdded'    => 'Int', 
     'PredictionMeetingsAdded'   => 'Int', 
     'PredictionProjectPlanSendSigned' => 'Int', 
     'PredictionRetainer1'    => 'Text', 
     'PredictionRetainer2'    => 'Text', 
     'PredictionDealsAddedPermCon'  => 'Int', 

     'ActualCompaniesAdded'  => 'Int', 
     'ActualManagersAdded'   => 'Int', 
     'ActualCandidatesAdded'  => 'Int', 
     'ActualSendoutsDone'   => 'Int', 
     'ActualLivejobsPerm_Con'  => 'Int', 
     'ActualMailshotsDone'   => 'Int', 
     'Actual1stInterview'   => 'Int', 
     'Actual2ndInterview'   => 'Int', 
     'ActualAddsAdded'    => 'Int', 
     'ActualMeetingsAdded'   => 'Int', 
     'ActualProjectPlanSendSigned' => 'Int', 
     'ActualRetainer1'    => 'Text', 
     'ActualRetainer2'    => 'Text', 
     'ActualDealsAddedPermCon'  => 'Int', 

     'PipelinePermJob' => 'Text', 
     'PipelinePerm1stInt' => 'Int', 
     'PipelinePermStatus' => 'Text', 

     'PipelineConJob' => 'Text', 
     'PipelineCon1stInt' => 'Int', 
     'PipelineConStatus' => 'Text', 

     'ActionPlan'   => 'Text', 
     'PromotionTarget'  => 'Float', 
     'Leadership'   => 'Text', 
     'DevelopmentPoints'  => 'Text', 
     'TrainingAndHelp'  => 'Text', 
     'OtherPoints'   => 'Text' 
    ); 

    private static $has_one = array(
     'Page' => 'Page' 
    ); 

    /** 
    * @param bool $includerelations 
    * @return array|string 
    */ 
    public function fieldLabels($includerelations = true) { 

     $labels = parent::fieldLabels(); 

     $labels['NameAndSpecialisation']  = _t('MonthlyReviewRequest.NameAndSpecialisation', "Name and specialisation:"); 
     $labels['MBRDate']      = _t('MonthlyReviewRequest.MBRDate', "MBR Date:"); 

     $labels['PredictionCompaniesAdded']    = _t('MonthlyReviewRequest.PredictionCompaniesAdded', "Companies added:"); 
     $labels['PredictionManagersAdded']    = _t('MonthlyReviewRequest.PredictionManagersAdded', "Managers added:"); 
     $labels['PredictionCandidatesAdded']    = _t('MonthlyReviewRequest.PredictionCandidatesAdded', "Candidates added:"); 
     $labels['PredictionSendoutsDone']     = _t('MonthlyReviewRequest.PredictionSendoutsDone', "Sendouts done:"); 
     $labels['PredictionLivejobsPerm_Con']    = _t('MonthlyReviewRequest.PredictionLivejobsPerm_Con', "Livejobs Perm/Con:"); 
     $labels['PredictionMailshotsDone']    = _t('MonthlyReviewRequest.PredictionMailshotsDone', "Mailshots done:"); 
     $labels['Prediction1stInterview']     = _t('MonthlyReviewRequest.Prediction1stInterview', "1st Interview:"); 
     $labels['Prediction2ndInterview']     = _t('MonthlyReviewRequest.Prediction2ndInterview', "2nd Interview:"); 
     $labels['PredictionAddsAdded']     = _t('MonthlyReviewRequest.PredictionAddsAdded', "Adds added:"); 
     $labels['PredictionMeetingsAdded']    = _t('MonthlyReviewRequest.PredictionMeetingsAdded', "Meetings added:"); 
     $labels['PredictionProjectPlanSendSigned']  = _t('MonthlyReviewRequest.PredictionProjectPlanSendSigned', "Project plans send/signed:"); 
     $labels['PredictionRetainer1']     = _t('MonthlyReviewRequest.PredictionRetainer1', "Retainer 1:"); 
     $labels['PredictionRetainer2']     = _t('MonthlyReviewRequest.PredictionRetainer2', "Retainer 2:"); 
     $labels['PredictionDealsAddedPermCon']   = _t('MonthlyReviewRequest.PredictionDealsAddedPermCon', "Deals added Perm/Con:"); 

     $labels['ActualCompaniesAdded']    = _t('MonthlyReviewRequest.ActualCompaniesAdded', "Companies added:"); 
     $labels['ActualManagersAdded']    = _t('MonthlyReviewRequest.ActualManagersAdded', "Managers added:"); 
     $labels['ActualCandidatesAdded']    = _t('MonthlyReviewRequest.ActualCandidatesAdded', "Candidates added:"); 
     $labels['ActualSendoutsDone']     = _t('MonthlyReviewRequest.ActualSendoutsDone', "Sendouts done:"); 
     $labels['ActualLivejobsPerm_Con']    = _t('MonthlyReviewRequest.ActualLivejobsPerm_Con', "Livejobs Perm/Con:"); 
     $labels['ActualMailshotsDone']    = _t('MonthlyReviewRequest.ActualMilshotsDone', "Mailshots done:"); 
     $labels['Actual1stInterview']     = _t('MonthlyReviewRequest.Actual1stInterview', "1st Interview:"); 
     $labels['Actual2ndInterview']     = _t('MonthlyReviewRequest.Actual2ndInterview', "2nd Interview:"); 
     $labels['ActualAddsAdded']     = _t('MonthlyReviewRequest.ActualAddsAdded', "Adds added:"); 
     $labels['ActualMeetingsAdded']    = _t('MonthlyReviewRequest.ActualMeetingsAdded', "Meetings added:"); 
     $labels['ActualProjectPlanSendSigned']  = _t('MonthlyReviewRequest.ActualProjectPlanSendSigned', "Project plans send/signed:"); 
     $labels['ActualRetainer1']     = _t('MonthlyReviewRequest.ActualRetainer1', "Retainer 1:"); 
     $labels['ActualRetainer2']     = _t('MonthlyReviewRequest.ActualRetainer2', "Retainer 2:"); 
     $labels['ActualDealsAddedPermCon']   = _t('MonthlyReviewRequest.ActualDealsAddedPermCon', "Deals added Perm/Con:"); 

     $labels['PipelinePermJob']   = _t('MonthlyReviewRequest.PipelinePermJob', "Job"); 
     $labels['PipelinePerm1stInt']   = _t('MonthlyReviewRequest.PipelinePerm1stInt', "No. of 1st Int"); 
     $labels['PipelinePermStatus']   = _t('MonthlyReviewRequest.PipelinePermStatus', "Status"); 

     $labels['PipelineConJob']   = _t('MonthlyReviewRequest.PipelineConJob', "Job"); 
     $labels['PipelineCon1stIn']   = _t('MonthlyReviewRequest.PipelineCon1stIn', "No. of 1st Int"); 
     $labels['PipelineConStatus']   = _t('MonthlyReviewRequest.PipelineConStatus', "Status"); 

     $labels['ActionPlan']  = _t('MonthlyReviewRequest.ActionPlan', "Action Plan:"); 

     $labels['PromotionTarget']  = _t('MonthlyReviewRequest.PromotionTarget', "Promotion Target:"); 
     $labels['Leadership']    = _t('MonthlyReviewRequest.Leadership', "Leadership:"); 
     $labels['DevelopmentPoints']  = _t('MonthlyReviewRequest.DevelopmentPoints', "Development Points:"); 
     $labels['TrainingAndHelp']  = _t('MonthlyReviewRequest.TrainingAndHelp', "Training & Help:"); 
     $labels['OtherPoints']   = _t('MonthlyReviewRequest.OtherPoints', "Other Points"); 

     $labels['SaveReviewForm'] = _t('MonthlyReviewRequest.SaveReviewForm', "Submit Review"); 

     return $labels; 
    } 

    public function sendMonthlyReviewRequestToSireEmail() 
    {   
     FrontendEmail::create()->sendMonthlyReviewRequestToSireEmail($this, MonthlyReviewRequest $monthlyreviewrequest, ContentController $controller); 
    } 

    public function providePermissions() 
    { 
     return array(
      "VIEW_MONTHLY_REVIEW" => "View Monthly Review", 
     ); 
    } 
} 

A作成3番目のファイルには、もありますCRMメニューを開き、このメニューからリダイレクトすると、次のようになります。http://pastebin.com/BCu4dtw3

どこがエラーですか?私はこのバグと一日中戦っています...

答えて

0

FormActionの最初のパラメータは、送信時にフォームを処理するコントローラ機能を指定する必要があります。

コードでは、FormActionアクションがsaveReviewFormに設定されています。 saveReviewFormは、あなたのフォームではなくコントローラ上の関数である必要があります。

また、getCustomFormActions関数では、FormActionのアクションが'MonthlyReviewRequest.SubmitReview'に誤って設定されています。

関連する問題