2016-08-30 8 views
0

Мне нужно передать некоторые данные из формы в базу данных в SilverStripe, но когда я нажимаю кнопку «Отправить», все, что у меня есть, это перезагрузка формы пустым полем, и, конечно, нет данные в дБ. Вот код файла формы (это слишком долго, чтобы вставить в код тегов здесь): http://pastebin.com/KHnZug9ZСохранение данных из формы в db, 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", 
     ); 
    } 
} 

Там также третий файл, который создает CRM и перенаправляет из этого меню в форму: http://pastebin.com/BCu4dtw3

Где ошибка? Я борюсь с этой ошибкой весь день ...

ответ

0

Первый параметр FormAction должен указать функцию контроллера, которая должна обрабатывать форму при отправке.

В вашем коде FormAction action установлен на saveReviewForm. saveReviewForm должен быть функцией вашего контроллера, а не вашей формой.

Также обратите внимание, что ваша функция getCustomFormActions неправильно устанавливает действие FormAction на 'MonthlyReviewRequest.SubmitReview'.

Смежные вопросы