Laravel记录未提交

时间:2016-10-23 08:45:32

标签: php laravel-4

我的Laravel 4网络应用程序中有一个拒绝提交到数据库的表单。每次我尝试提交,页面只是重新加载,我甚至在laravel日志中看不到任何错误消息。我花了两天时间试图弄清问题是什么,因为我似乎无法看到代码有什么问题。

任何帮助将不胜感激。

/ ****表格视图*** /

<div class="container">

   <div class="row">
            @if(Session::has('success'))
               <div class="alert alert-success">
                   <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
                   {{Session::get('success')}}
               </div>
                  @elseif(Session::has('fail'))
               <div class="alert alert-danger">
                   <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
                   {{Session::get('fail')}}
               </div>
            @endif
    </div>

   @include('partials.admin-navbar')
        <div class="admin_profile_content">
    <form class="" method="post" action=" {{URL::route('postSubmitCompetition')}}">
          <div class="" style="width:80%; margin:auto;">

                 <div class="panel panel-default">
                      <div class="panel-heading">Organization </div>
                          <div class="panel-body">
                               <div class="form-group">
                                    <label for="" class="col-sm-2 control-label">Select the Organization hosting this competition </label>
                                    <div class="col-sm-10">
                                        {{ Form::select('organization', $organizations, null, ['class' => 'form-control']) }}
                                        <p class="text-danger">
                                            @if($errors->has('organization'))
                                                {{ $errors->first('organization') }}
                                            @endif
                                        </p>
                                    </div>
                               </div>
                          </div>
                 </div>

                 <div class="panel panel-default">
                      <div class="panel-heading">Competition name </div>
                          <div class="panel-body">
                               <div class="form-group">
                                    <label for="" class="col-sm-2 control-label">Competition name </label>
                                    <div class="col-sm-10">
                                      <input type="text" class="form-control" id="" name="competition_name">
                                        <p class="text-danger">
                                            @if($errors->has('competition_name'))
                                                {{ $errors->first('competition_name') }}
                                            @endif
                                        </p>
                                    </div>
                               </div>
                          </div>
                 </div>

                <div class="panel panel-default">
                      <div class="panel-heading">Prizes </div>
                      <div class="panel-body">
                            <div class="form-group">
                                <label for="" class="col-sm-2 control-label">Total prize pool</label>
                                <div class="col-sm-10">
                                  <input type="text" class="form-control" id="" name="total_prize">
                                </div>
                           </div>

                            <div class="form-group" style="padding-top:41px;">
                                <label for="" class="col-sm-2 control-label">Number of prize-winning places</label>
                                <div class="col-sm-1">
                                    Top
                                </div>
                                <div class="col-sm-2">
                                    <input type="text" class="form-control" id="" name="number_of_winning_places">
                                    <p class="text-danger">
                                        @if($errors->has('number_of_winning_places'))
                                            {{ $errors->first('number_of_winning_places') }}
                                        @endif
                                    </p>
                                </div>
                                <div class="col-sm-3">
                                  competitors will win a prize
                                </div>
                           </div>

                      </div>
                </div>

                <div class="panel panel-default">
                      <div class="panel-heading">Timeline </div>
                          <div class="panel-body">
                              <div class="form-group">
                                    <label for="" class="col-sm-2 control-label"> Start and end date </label>
                                    <div class="col-sm-3">
                                       <input type="text" class="form-control" id="competition_start_date" name="competition_start_date">
                                        <p class="text-danger">
                                            @if($errors->has('competition_start_date'))
                                                {{ $errors->first('competition_start_date') }}
                                            @endif
                                        </p>
                                        <input type="hidden" name="hidden_start_date" id="hidden_start_date">
                                    </div>
                                     <div class="col-sm-2">
                                      to
                                    </div>
                                    <div class="col-sm-3">
                                       <input type="text" class="form-control" id="competition_end_date" name="competition_end_date">
                                        <p class="text-danger">
                                            @if($errors->has('competition_end_date'))
                                                {{ $errors->first('competition_end_date') }}
                                            @endif
                                        </p>
                                        <input type="hidden" name="hidden_end_date" id="hidden_end_date">
                                    </div>
                              </div>
                          </div>
                </div>

                 <div class="panel panel-default">
                      <div class="panel-heading">Competition details </div>
                          <div class="panel-body">
                              <div class="form-group">
                                    <label for="" class="col-sm-2 control-label"> Competition details </label>

                                    <div class="col-sm-10">
                                      <textarea class="form-control" name="competition_details" id="competition_details" rows="10"> </textarea>
                                        <p class="text-danger">
                                            @if($errors->has('competition_details'))
                                                {{ $errors->first('competition_details') }}
                                            @endif
                                        </p>
                                    </div>
                              </div>
                          </div>
                </div>


              <div class="panel panel-default">
                  <div class="panel-heading">Competition Status </div>
                  <div class="panel-body">
                      <div class="form-group">
                          <label for="" class="col-sm-2 control-label"> Set competition status </label>

                          <div class="col-sm-10">
                             <select class="form-control" name="competition_status" id="competition_status">
                              <option value="0">Coming Soon</option>
                              <option value="1">Live </option>
                             </select>
                          </div>
                      </div>
                  </div>
              </div>

                <div class="panel panel-default">
                      <div class="panel-heading">Competition data </div>
                          <div class="panel-body">
                              <div class="form-group">
                                    <label for="" class="col-sm-2 control-label"> Upload the data for the competition </label>

                                    <div class="col-sm-10">
                                       <input type="file" id="competition_data_1" name="competition_data_1">
                                        <p class="help-block"> Data file/folder 1</p>
                                    </div>


                              </div>
                          </div>
                </div>
              {{ Form::token() }}
              <div class="panel panel-default">
                      <div class="panel-heading">Upload Competition </div>
                          <div class="panel-body">
                              <div class="form-group">
                                   <div class="col-sm-10">
                                    <input type="submit" class="btn btn-primary btn-lg btn-block" id="submit_competition" value="Submit">
                                   </div>
                              </div>
                          </div>
                </div>

          </div>

 </form>

<hr>

/ *控制器方法* /

   public function postSubmitCompetition()
    {
   $validator = Validator::make(Input::all(), array(
       'organization' => 'required',
       'competition_name' => 'required',
       'prize_winning_places' => 'required',
       'competition_start_date' => 'required',
       'competition_end_date' => 'required',
       'competition_details' => 'required',
       'status' => 'required'
   ));

   if($validator->fails())
   {
     return Redirect::route('getSubmitCompetition')->withErrors($validator)->withInput();
   }
   else
   {
      $competition = new Competition();
      $competition->hosting_organization_id = Input::get('organization');
      $competition->competition_name = Input::get('competition_name');
      $competition->total_prize_pool = Input::get('total_prize');
      $competition->prize_winning_places = Input::get('number_of_winning_places');
      $competition->start_date = Input::get('competition_start_date');
      $competition->end_date = Input::get('competition_end_date');
      $competition->competition_details = Input::get('competition_details');
      $competition->status = Input::get('competition_status');


       if($competition->save())
       {

           return Redirect::route('getSubmitCompetition')->with('success', 'You have successfully created this competition');

       }
       else
       {
           return Redirect::route('getSubmitCompetition')->with('fail', 'An error occurred while creating that competition. Please contact sys admin');
       }
   }
}

/ *路线* /

  Route::post('/admin/submit-a-competition', array('uses' => 'CompetitionController@postSubmitCompetition', 'as' => 'postSubmitCompetition'));

2 个答案:

答案 0 :(得分:1)

问题

Laravel从不保存您的数据,因为验证器失败了。

$validator = Validator::make(Input::all(), array(
       'organization' => 'required',
       'competition_name' => 'required',
       'prize_winning_places' => 'required',
       'competition_start_date' => 'required',
       'competition_end_date' => 'required',
       'competition_details' => 'required',
       'status' => 'required'
   ));

您需要 prize_winning_places 状态,但视图中没有这两个输入字段。

缺少输入字段:

字段名称:状态 - 问题:您选择了名称为 competition_status 而不是: 状态

<select class="form-control" name="competition_status" id="competition_status">
<option value="0">Coming Soon</option>
<option value="1">Live </option>
</select>

字段名称: prize_winning_places - 问题:您创建了一个名为的输入字段:** number_of_winning_places **而不是 prize_winning_places

<input type="text" class="form-control" id="" name="number_of_winning_places">

解决方案

将$ validator变量更改为:

$validator = Validator::make(Input::all(), array(
       'organization' => 'required',
       'competition_name' => 'required',
       'number_of_winning_places' => 'required',
       'competition_start_date' => 'required',
       'competition_end_date' => 'required',
       'competition_details' => 'required',
       'competition_status' => 'required'
   ));

答案 1 :(得分:0)

检查此行:

<form class="" method="post" action=" {{URL::route('postSubmitCompetition')}}">

此处表单操作是路径名称而不是函数名称。像:

Route::post('/save_data', array('uses' => 'CompetitionController@postSubmitCompetition', 'as' => 'postSubmitCompetition'));

它会将您的路线路由到该功能。