Laravel - Dynami c Поле ввода не удалось отправить без отображения ошибки - PullRequest
0 голосов
/ 03 февраля 2020

Я боролся с этой проблемой уже несколько дней. У меня есть проект на Laravel -5,8

У меня есть два класса моделей

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'
      ];

Оценка Цель основная модель

StoreAppraisalGoalRequest

class StoreAppraisalGoalRequest extends FormRequest
{
 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',
 ];
 }
}

Контроллер

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');
}
}

create.blade

<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>

javascript

<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>

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

Затем я добавил это перед попыткой {} в функции сохранения контроллера:

$ data = $ request-> все(); print_r ($ данных); выход;

и я получил такой результат:

Array ([_token] => KbnpT9MAFywHJBfVoWllKvr2ELSsRNZmWM4B5Eui [goal_type_id] => 2 [appraisal_itt_idity_id] > название цели1 [goal_description] => [активность] => массив ([0] => активность2 [1] => активность3) [kpi_description] => массив ([0] => описание kpi2 [1] => описание kpi3) [weighted_score] => 20 [start_date] => 2020-02-03 [end_date] => 2020-02-29)

Но когда я добавил

print_r ($ цели); выход;

после

$ goal-> save ();

Результата не было.

Как мне разобраться с этим?

Спасибо.

1 Ответ

0 голосов
/ 03 февраля 2020

иногда некоторые разработчики используют оператор try catch, но забывают посмотреть, что не так, пока код вызывает исключение. так что давайте изменим ваше выражение catch на это, чтобы выяснить, что не так.

}catch (Exception $exception) {
        dd($exception->getMessage());
        Session::flash('danger', 'Appraisal Goal creation failed!');
        return redirect()->route('appraisal.appraisal_goals.index');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...