@radio_mus

Как перенести бизнес логику из контроллера?

Здравствуйте. Только начинаю изучать laravel, столкнулся с некоторой трудностью.
Простая задача: из формы сделать запись в БД.
Задача упрощена, специально для примера.

Создал маршрут и его обработчик:
Route::get('/create/',['uses'=>'PostController@create', 'as'=>'add_post']);
    Route::post('/create/',['uses'=>'PostController@store', 'as'=>'poster']);


Создал модель Post.

Создал контроллер PostController:
public function create()
    {
        //форма
        return view('add_post::create');
    }

    public function store(Request $request)
    {
        $post= new Post;
        $post->name = $request->name;
        $post->image = $request->text;

        $post->save();

        return redirect('posts');
    }


Вопрос в том, как теперь эту бизнес-логику перенести в PostService, чтобы использовать типа:
new PostService()->save();
Главная идея, чтобы никаких вызовов из контроллера не было.
Заранее, всем откликнувшимся большое спасибо за потраченное время!
  • Вопрос задан
  • 352 просмотра
Решения вопроса 1
@hakkol
Все тело метода store переносите в тело метода save (следуя вашему примеру) в PostService, а в методе store пишите:
$this->postService->save($request);
Ну и в PostController пишите
protected $postService;

public function __construct(PostService $postService) {
    $this->postService = $postService;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы