Laravel - Как сделать замену выпадающего списка для заполнения текстовых полей - PullRequest
0 голосов
/ 16 февраля 2020

Я использую Laravel -5,8 для проекта веб-приложения, как показано ниже:

Классы моделей

class AppraisalGoalType extends Model
{
    protected $table = 'appraisal_goal_types';

    protected $fillable = [
              'name',
              'company_id',
              'parent_id',
              'max_score',
          ];

    public function children()
    {
      return $this->hasMany('App\Models\Appraisal\AppraisalGoalType', 'parent_id');
    }

    public function appraisalgoals()
    {
       return $this->hasMany('App\Models\Appraisal\AppraisalGoal');
    }
 }

    class AppraisalGoal extends Model
    {
        protected $table = 'appraisal_goals';

        protected $fillable = [
              'goal_type_id',
              'appraisal_identity_id',
              'employee_id',
              'company_id',
              'weighted_score',
          'employee_max_score',
              'total_weighted_score',
              'employee_comment',
              'goal_title',
              'appraisal_doc',
          ];

  public function goaltype()
  {
    return $this->belongsTo('App\Models\Appraisal\AppraisalGoalType','goal_type_id');
  }

  public function employee()
  {
    return $this->belongsTo('App\Models\Hr\HrEmployee','employee_id');
  }

  public function appraisalidentity()
  {
    return $this->belongsTo('App\Models\Appraisal\AppraisalIdentity','appraisal_identity_id');
  }  
}

Контроллер

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

    $identities = DB::table('appraisal_identity')->select('id','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)
{
    $validated = $request->validated();       
    $appraisalStartDate = Carbon::parse($request->appraisal_start_date);
    $appraisalEndDate = Carbon::parse($request->appraisal_end_date);        
    $userCompany = Auth::user()->company_id;
    $employeeId = Auth::user()->employee_id;
      $identities = DB::table('appraisal_identity')->select('id','appraisal_name')->where('company_id', $userCompany)->where('is_current', 1)->first();
    try {
        $goal = new AppraisalGoal();
        $goal->goal_type_id             = $request->goal_type_id;
        $goal->appraisal_identity_id    = $request->appraisal_identity_id;
        $goal->employee_id              = $employeeId;
        $goal->weighted_score           = $request->weighted_score;
        $goal->goal_title               = $request->goal_title;

             if ($request->appraisal_doc != "") {
                 $appraisal_doc = $request->file('appraisal_doc');
                 $new_name = rand() . '.' . $appraisal_doc->getClientOriginalExtension();
                 $appraisal_doc->move(public_path('storage/documents/appraisal_goal'), $new_name);
                 $goal->appraisal_doc = $new_name;
            }                       
        $goal->save();

         $goal->update([
             'appraisal_start_date' => $min_date,
             'appraisal_end_date'   => $max_date
                 ]);

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

Просмотр

   <form  action="{{route('appraisal.appraisal_goals.store')}}" method="post" class="form-horizontal" enctype="multipart/form-data">
       {{csrf_field()}}
       
       <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 hidden 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>    
            <input type="hidden" name="appraisal_identity_id" value="{{$identities->id}}">
          <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-12 col-sm-6">
            <div class="form-group">
              <label class="control-label"> Weight:<span style="color:red;">*</span></label>
              <input  type="number" name="weighted_score" placeholder="Enter weighted score here" class="form-control">
            </div>
          </div>  

          <div class="col-12 col-sm-6">
            <div class="form-group">
              <label class="control-label"> Employee Max. Score:</label>
              <input  type="number" name="employee_max_score" class="form-control" disabled>
            </div>
          </div> 

          <div class="col-12 col-sm-6">
            <div class="form-group">
              <label class="control-label"> Total Weighted Score:</label>
              <input  type="number" name="total_weighted_score" class="form-control" disabled>
            </div>
          </div> 

          <div class="col-12 col-sm-6">
            <div class="form-group">
                <label class="control-label"> Attachment:</label>
                    <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>
            </div>
          </div>

       </div>
     </div>
    </div>          

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

Чего я хочу добиться, так это:

Когда выпадающий список для goal_type_id (goal_type) установлен на Change

  1. он должен искать appraisal_goals и загружать weighted_score в текстовое поле, где employee_id = $ employeeId, appraisal_identity_id = $ identifities и goal_type_id = $ категории. Это total_weighted_score

  2. , он должен выполнить поиск appraisal_goal_types и загрузить max_score в текстовое поле, где parent_id = $ category. Это employee_max_score

Как это можно сделать?

Спасибо.

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