Вопрос:
Возможно ли выполнить несколько функций в одном контроллере с одним маршрутом. Я думал, что это будет что-то вроде этого, но это не сработает.
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() } }