Упростите код для использования в других контроллерах - PullRequest
0 голосов
/ 22 мая 2019

Можно ли упростить это для использования в различных методах контроллеров?

$eventId = request()->route('event');
$event = Event::where('id', $eventId)->first();
if($event->finish == 0) {
    return $content
        ->header(__('Timing'))
        ->description(__('List'))
        ->body($this->grid());
}
else {
    return $content
            ->header(__('Start list'))
            ->description(__('List'))
            ->body(view('admin.events.finished'));
}

Единственное, что изменится, будет заголовок, описание и тело, когда отделка равна 0, иначеодинаково для всех.

Спасибо

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

В вашем контроллере не так уж много логики, так что не все так плохо. Но да, вы можете. Немного вещей, которые я замечаю, это $event->finish == 0, я бы создал область видимости для вашей модели в первую очередь

public function isFinished()
{
    return $this->finish == 0;
}

Как именно вы получаете EventId? Я полагаю, это передается в параметре? Таким образом, вы должны быть в состоянии получить это как зависимость?

public function YourcontrollerFunction(Request $request, $eventId)
{
    //Either you get the request from a parameter or the $request->event_id
}

так что небольшой рефакторинг будет выглядеть так:

public function YourcontrollerFunction(Request $request, $eventId)
{
    $event = Event::findOrFail($eventId);
    if($event->isFinished()) {
        return $content
           ->header(__('Timing'))
           ->description(__('List'))
           ->body($this->grid());
    }
//No need for the else.
   return $content
     ->header(__('Start list'))
     ->description(__('List'))
     ->body(view('admin.events.finished'));
}

Если ответ используется часто, вы можете создать класс Response, который также хранится, но не вижу причины для этого здесь.

0 голосов
/ 22 мая 2019

Вы можете сохранить суть в модели, а затем вызывать ее всякий раз, когда вам это нужно.

public function event ($eventId){
   $event = Event::where('id', $eventId)->first();

   if($event->finish == 0) {
     $outcome = $content ->header(__('Timing')) 
          ->description(__('List')) ->body($this->grid()); 

  } else { 
    $outcome = $content ->header(__('Start list')) 
            ->description(__('List'))
             ->body(view('admin.events.finished')); 
  }

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