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

Я занимаюсь разработкой веб-приложения с Laravel-5.8.

У меня есть Laravel модель:

class Employee extends Model
{
    protected $table = 'employees';
    protected $fillable = [
              'employee_code',
              'supervisor_id',
              'first_name',
              'emp_image',
              'last_name',
          ];

    public function supervisor()
    {
        return $this->belongsTo('App\Models\Employee','supervisor_id');
    }
}

Контроллер

public function index()
{
    $employees = Employee::all();
    return view('employees.index')->with('employees', $employees);
}


public function create()
{
    $supervisors = Employee::all();
    return view('employees.create')->with('supervisors', $supervisors);
}

public function store(StoreEmployeeRequest $request)
{
    try {
            $designation = Employee::create([
                'employee_code'      => $request->employee_code,
                'supervisor_id'        => $request->supervisor_id,
                'first_name'           => $request->first_name,
                'last_name'           => $request->last_name,
            ]);
            Session::flash('success', 'Employee is created successfully');
            return redirect()->route('employees.index');
    } catch (Exception $exception) {
            Session::flash('danger', 'Employee creation failed!');
            return redirect()->route('employees.index');
    }
}

create.blade

<div class="form-group">
   <label>Employee Code<span style="color:red;">*</span></label>
   <input  type="text" name="employee_code" placeholder="Enter employee code here" class="form-control" value="{{old('employee_code')}}">
</div>

<select class="form-control select2bs4" data-placeholder="Choose Supervisor" tabindex="1" name="grade_level_id" style="width: 100%;">>
    <option value="">Select Supervisor</option>
     @if($supervisors->count() > 0)
        @foreach($supervisors as $supervisor)
           <option value="{{$supervisor->id}}">{{$supervisor->employee_code}}</option>
        @endforeach
     @endif
</select>

Каждый employee имеет его или supervisor. Супервизор выводится из таблицы сотрудников - supervisor_id. Когда выбран раскрывающийся список супервизора, он загружает employee_code, а затем сохраняет данные сотрудника в базе данных.

Я пробовал коды выше, но в выпадающем списке ничего нет. Как мне переписать мой контроллер, вид и модель для достижения этой цели?

1 Ответ

0 голосов
/ 31 января 2020

Вы отправили $ supervisor в функцию представления employee.create, вам следует отправить $ supervisor.

public function create()
{
    $supervisors = Employee::all();
    return view('employees.create')->with('supervisors', $supervisor);
}

и вам следует изменить имя выбора на supervisor_id вместо grade_level_id.

<select class="form-control select2bs4" data-placeholder="Choose Supervisor" tabindex="1" name="supervisor_id" style="width: 100%;">>
    <option value="">Select Supervisor</option>
     @if($supervisors->count() > 0)
        @foreach($supervisors as $supervisor)
           <option value="{{$supervisor->id}}">{{$supervisor->employee_code}}</option>
        @endforeach
     @endif
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...