Laravel - Dynami c Поле ввода не сохранило ни одной записи - PullRequest
0 голосов
/ 30 января 2020

Используя Laravel -5.8, я хочу сохранить несколько данных в базе данных, используя динамический ввод c.

StoreAppraisalGoalRequest

class StoreAppraisalGoalRequest extends FormRequest
{
 public function authorize()
 {
  return \Gate::allows('appraisal_goal_create');
 }
 public function rules()
 {
return [
    'goal_title'                => 'required|min:5|max:100',   
    'goal_type_id'              => 'required',
    'weighted_score'            => 'required|numeric|min:0|max:500',

    'start_date'                => 'required',
    'end_date'                  => 'required|after_or_equal:start_date',
    'appraisal_goal_id'         => 'required',
    'kpi_description'           => 'required|max:300',
    'activity'                  => 'required|max:300',
 ];
 }
}

Модели

AppraisalGoal

protected $fillable = [
          'goal_type_id',
          'appraisal_identity_id',
          'employee_id',
          'company_id',
          'is_published',
          'is_approved',
          'weighted_score',
          'employee_comment',
          'line_manager_comment',
          'goal_title',
          'start_date',
          'end_date',
          'created_by',
          'created_at',
          'updated_by',
          'updated_at',
          'is_active'
      ];

AppraisalGoalDetail

protected $fillable = [
          'name',
          'company_id',
          'appraisal_goal_id',
          'kpi_description',
          'appraisal_doc',
          'activity',
          'created_by',
          'created_at',
          'updated_by',
          'updated_at',
          'is_active'
      ];

Контроллер

public function create()
{
$userCompany = Auth::user()->company_id;

$identities = DB::table('appraisal_identity')->select('appraisal_name')->where('company_id', $userCompany)->where('is_current', 1)->first();

$goaltypes   =       AppraisalGoalType::where('company_id', $userCompany)->get(); 
 $categories = AppraisalGoalType::with('children')->where('company_id', $userCompany)->whereNull('parent_id')->get();

return view('appraisal.appraisal_goals.create')
        ->with('goaltypes', $goaltypes)
        ->with('categories', $categories)
        ->with('identities', $identities);
}

public function store(StoreAppraisalGoalRequest $request)
{
 $startDate = Carbon::parse($request->start_date);
$endDate = Carbon::parse($request->end_date);
$userCompany = Auth::user()->company_id;
$appraisal_identity_id = AppraisalIdentity::where('company_id', $userCompany)->where('is_current',1)->value('id');
try {
    $goal = new AppraisalGoal();
    $goal->goal_type_id             = $request->goal_type_id;
    $goal->appraisal_identity_id    = $appraisal_identity_id;
    $goal->employee_id              = $request->employee_id;
    $goal->weighted_score           = $request->weighted_score;
    $goal->goal_description         = $request->goal_description;
    $goal->start_date               = $startDate;
    $goal->end_date                 = $endDate;
    $goal->company_id               = Auth::user()->company_id;
    $goal->created_by               = Auth::user()->id;
    $goal->created_at               = date("Y-m-d H:i:s");
    $goal->is_active                = 1;
    $goal->save();

    foreach ( $request->activity as $key => $activity){
        $goaldetail = new AppraisalGoalDetail();
        $goaldetail->kpi_description            = $request->kpi_description[$key];
        $goaldetail->appraisal_doc              = $request->application_doc[$key];
        $goaldetail->activity                   = $request->activity[$key];
        $goaldetail->appraisal_goal_id          = $goal->id;
        $goaldetail->company_id                 = Auth::user()->company_id;
        $goaldetail->created_by                 = Auth::user()->id;
        $goaldetail->created_at                 = date("Y-m-d H:i:s");
        $goaldetail->is_active                  = 1;
        $goaldetail->save();
     }
        Session::flash('success', 'Appraisal Goal is created successfully');
        return redirect()->route('appraisal.appraisal_goals.index');
} catch (Exception $exception) {
        Session::flash('danger', 'Appraisal Goal creation failed!');
        return redirect()->route('appraisal.appraisal_goals.index');
}
}

Основной класс модели - AppraisalGoal.

просмотр клинка

<div class="row">
        <div class="col-md-12">
        <!-- general form elements -->
         <div class="card card-secondary">
            <div class="card-header">
                <h3 class="card-title">Creating My 3 + 1 Goals: <b>{{$identities->appraisal_name}}</b></h3>
            </div>
            <!-- /.card-header -->
            <!-- form start -->
          <form  method="POST" action="{{route('appraisal.appraisal_goals.store')}}">
          @csrf
       <div class="card-body">
        <div class="form-body">
        <div class="row">
            
          <div class="col-12 col-sm-6">
            <div class="form-group">
              <label class="control-label"> Goal Type:<span style="color:red;">*</span></label>
              <select id="goal_type" class="form-control" name="goal_type_id">
                <option value="">Select Goal Type</option>

                @foreach ($categories as $category)
                @unless($category->name === 'Job Fundamentals')
                  <option disabled="disabled" value="{{ $category->id }}" {{ $category->id == old('category_id') ? 'selected' : '' }}>{{ $category->name }}</option>

                  @if ($category->children)
                    @foreach ($category->children as $child)
                    @unless($child->name === 'Job Fundamentals')
                      <option value="{{ $child->id }}" {{ $child->id == old('category_id') ? 'selected' : '' }}>&nbsp;&nbsp;{{ $child->name }}</option>
                    @endunless
                    @endforeach
                  @endif
                  @endunless
                @endforeach
              </select>
            </div>
          </div>    
            
          <div class="col-12 col-sm-6">
            <div class="form-group">
              <label class="control-label"> Goal Title:<span style="color:red;">*</span></label>
              <input  type="text" name="goal_title" placeholder="Enter goal title here" class="form-control">
            </div>
          </div>
            
          <div class="col-sm-12">
            <div class="form-group">
                <label>Goal Description</label>
                <textarea rows="2" name="goal_description" class="form-control" placeholder="Enter Goal Description here ..."></textarea>
            </div>
          </div>

<div class="col-sm-12">
            <table class="table table-bordered">
                        <thead>
                        <tr>
                            <th scope="col">Activity<span style="color:red;">*</span></th>
                            <th scope="col">KPI Description<span style="color:red;">*</span></th>
                            <th scope="col">Attachment</th>
                            <th scope="col"><a class="addRow"><i class="fa fa-plus"></i></a></th>
                        </tr>
                        </thead>
                        <tbody>
                        <tr>
                            <td><input type="text" name="activity[]" class="form-control activity" ></td>
                            <td><input type="text" name="kpi_description[]" class="form-control kpi" ></td>
                            <td>
                                <div class="custom-file">
                                <input type="file" name="appraisal_doc[]" class="custom-file-input" id="customFile">
                                <label class="custom-file-label" for="exampleInputFile">Choose file</label>
                                </div>
                            </td>
                            <td><a class="btn btn-danger remove"> <i class="fa fa-times"></i></a></td>
                         </tr>
                        </tbody>


                    </table>
        </div>
          <div class="col-12 col-sm-4">
            <div class="form-group">
              <label class="control-label"> Weight:</label>
              <input  type="number" name="weighted_score" placeholder="Enter weighted score here" class="form-control">
            </div>
          </div>  

          <div class="col-12 col-sm-4">
            <div class="form-group">
              <label class="control-label"> Start Date:<span style="color:red;">*</span></label>
              <input type="date" class="form-control" placeholder="dd/mm/yyyy" name="start_date"  min="{{Carbon\Carbon::now()->format('Y-m-d')}}">
            </div>
          </div>

          <div class="col-12 col-sm-4">
            <div class="form-group">
              <label class="control-label"> End Date:<span style="color:red;">*</span></label>
              <input type="date" class="form-control" placeholder="dd/mm/yyyy" name="end_date"  min="{{Carbon\Carbon::now()->format('Y-m-d')}}">
            </div>
          </div>

       </div>
     </div>
    </div>          
    <!-- /.card-body -->
    <div class="card-footer">
      <button type="submit" class="btn btn-primary">{{ trans('global.save') }}</button>
      <button type="button" onclick="window.location.href='{{route('appraisal.appraisal_goals.index')}}'" class="btn btn-default">Cancel</button>
    </div>           
       
    </form>
    </div>
    <!-- /.card -->
   </div>
   <!--/.col (left) -->
  </div>

<script type="text/javascript">
    $(document).ready(function(){
        $('.addRow').on('click', function () {
   var isHod = {{ Auth::user()->is_hod == 0 ? 0 : 1 }};
    var numRows = $('.activity').length

    if (isHod || (!isHod && numRows<3)) {
        addRow();
    }
        });

        function addRow() {
            var addRow = '<tr>\n' +
' <td><input type="text" name="activity[]" class="form-control activity" ></td>\n' +
'   <td><input type="text" name="kpi_description[]" class="form-control kpi_description" ></td>\n' +
' <td><div class="custom-file"><input type="file" name="appraisal_doc[]" class="custom-file-input" id="customFile"><label class="custom-file-label" for="exampleInputFile">Choose file</label></div></td>\n' +
'  <td><a   class="btn btn-danger remove"> <i class="fa fa-times"></i></a></td>\n' +
'    </tr>';
            $('tbody').append(addRow);
            addRemoveListener();
        };
       addRemoveListener();
    });

function addRemoveListener() {
$('.remove').on('click', function () {
        var l =$('tbody tr').length;
        if(l==1){
            alert('you cant delete last one')
        }else{

            $(this).parent().parent().remove();

        }

    });
  }

</script>

Когда я нажимаю кнопку отправки, запись не сохраняется, а перенаправляется на страницу индекса. Ошибка не указана, даже в сети браузера.

Как ее устранить?

Спасибо. Лар

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...