Как передать несколько значений из контроллера для просмотра - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть форма с множеством выпадающих списков, которая при создании и редактировании записи заполняется из этого кода:

<?php

class ParticipantController extends Controller
{

    /**
     * Store a newly created resource in storage.
     */
    public function create(Participant $participant)
    {
        $this->authorize('create',$participant);

        $events = Event::get_name_and_id();
        $wards =Ward::get_name_and_id();
        $individuals = Individual::get_name_and_id();
        $organizations = Organization::get_name_and_id();
        $roles = ParticipantRole::get_name_and_id();
        $groups = Group::get_name_and_id();

        return view('participants.create', compact('events','wards','individuals','organizations','participant','roles','groups'));
    }


    /**
     * Show the form for editing the specified resource.
     */
    public function edit(Participant $participant)
    {
        $events = Event::get_name_and_id();
        $wards =Ward::get_name_and_id();
        $individuals = Individual::get_name_and_id();
        $organizations = Organization::get_name_and_id();
        $roles = ParticipantRole::get_name_and_id();
        $groups = Group::get_name_and_id();

        return view('participants.edit', compact('events','wards','individuals','organizations','participant','roles','groups'));
    }

}

Задница, которую вы можете видеть из кода, форма получает данные из 6 Таблицы как выпадающие списки, вот как это удалось. Работает нормально, но слишком много читать и понимать

1 Ответ

1 голос
/ 10 февраля 2020

Вы можете выполнить рефакторинг избыточного кода отдельным методом, например

class ParticipantController extends Controller
{

    public function populate($function_name, $participant) {
      $events = Event::get_name_and_id();
      $wards =Ward::get_name_and_id();
      $individuals = Individual::get_name_and_id();
      $organizations = Organization::get_name_and_id();
      $roles = ParticipantRole::get_name_and_id();
      $groups = Group::get_name_and_id();

      $data = compact('events','wards','individuals','organizations','roles' ,'groups', 'participant');
      return view('participants.' . $function_name , $data);
    }

    /**
     * Store a newly created resource in storage.
     */
    public function create(Participant $participant) {

        $this->authorize('create',$participant);
        return $this->populate(__FUNCTION__, $participant);
    }


    /**
     * Show the form for editing the specified resource.
     */
    public function edit(Participant $participant) {

       return $this->populate(__FUNCTION__, $participant);
    }

}
...