Laravel выполняет несколько функций в одном контроллере

Вопрос: Возможно ли выполнить несколько функций в одном контроллере с одним маршрутом. Я думал, что это будет что-то вроде этого, но это не сработает. Route::get('getdata','controller@getData', 'controller@getData1', 'controller@getData2'); В контроллере находятся следующие функции: получить данные getData1 getData2 Или есть более простой способ? Лучший ответ: В контроллере Добавьте что-нибудь подобное. class YourController extends Controller { //... protected

Вопрос:

Возможно ли выполнить несколько функций в одном контроллере с одним маршрутом. Я думал, что это будет что-то вроде этого, но это не сработает.

Route::get(‘getdata’,’controller@getData’, ‘controller@getData1’, ‘controller@getData2’);

В контроллере находятся следующие функции:

  • получить данные
  • getData1
  • getData2

Или есть более простой способ?

Лучший ответ:

В контроллере

Добавьте что-нибудь подобное.

class YourController extends Controller { //… protected function getAllData() { //Executes the seperate functions. $this->getData(); $this->getData1(); $this->getData2(); } //… }

Это будет выполнять функции соответственно.

Затем с вашего маршрута вы просто вызываете YourController@getAllData в качестве функции контроллера.

Ответ №1

Не имеет смысла, если несколько действий контроллера отвечают за один маршрут. Это не то, как работает MVC. У вас должно быть одно и только одно действие для каждого маршрута и вызывать каждую другую функцию, которая вам нужна внутри этого действия.

И помните, что для лучших практик каждый метод контроллеров должен содержать только код для ответа на запрос, а не бизнес-логику, и если у вас есть другие функции, которые нужно вызвать, поместите их в другие классы (слои).

class MyController extends Controller { public function myAction(MyService $myService) { $myService->getData(); // not $this->getData() } }

Оцените статью
Добавить комментарий