简化用于其他控制器的代码

是否可以简化它以用于各种控制器方法?


$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 时,唯一改变的是标题、描述和正文,其他都是相同的。


一只斗牛犬
浏览 142回答 2
2回答

慕斯709654

您可以将要点保存在模型中,然后在需要时调用它。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;  }

拉风的咖菲猫

您的控制器中没有太多逻辑,所以还不错。但是是的,你可以。我注意到的几件事是$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 类,该类也被存储,但在这里看不到原因。
打开App,查看更多内容
随时随地看视频慕课网APP