Как использовать контроллер внутри другого контроллера Laravel?

У меня есть две сущности: пользователи, объявления

Каждый пользователь может публиковать объявления.

Я создал контроллер AnnouncemetController, в котором есть класс метода: my(), возвращающий заметки для текущего пользователя.

Также у меня есть контроллер ProfileController, который представляет текущего пользователя профиля, где мне нужно показать все объявления пользователя.

Для этого я попытался повторно использовать контроллер AnnouncemetController внутри ProfileController и вызвать общедоступный метод my().

используйте App\Http\Controllers\AnnouncementController;

class ProfileController extends Controller
{
      $my = new AnnouncementController();
      $my->my();
}

Хорошо ли использовать такие?


person Darama    schedule 24.02.2017    source источник
comment
Да. Я бы поступил немного иначе. Я буду использовать статический метод вместо нестатического, и единственное, что мне нужно будет написать, это: AnnouncementController::my();   -  person Buglinjo    schedule 25.02.2017
comment
У меня есть два способа: создать пользовательскую библиотеку объявлений или использовать метод, упомянутый выше. Что скажут профессионалы?   -  person Darama    schedule 25.02.2017
comment
Также я думаю, что лучшая идея - использовать функции модели для конкретного пользовательского объекта, чтобы получать его объявления.   -  person Buglinjo    schedule 25.02.2017
comment
Вы хотите повторно создать метод my() в модели вызова ProfileController?   -  person Darama    schedule 25.02.2017
comment
Нет. Чтобы создать метод my() в модели User и получить вот так: $user-›my();   -  person Buglinjo    schedule 25.02.2017
comment
Для этого у меня есть отдельные модельные Анонсы.   -  person Darama    schedule 25.02.2017


Ответы (1)


Контроллер Laravel сопоставляет uri с действием. В вашем примере вы используете контроллер для доступа к данным, так что это не "правильно".

Вместо этого используйте методы модели для доступа к данным.

person Josh Petitt    schedule 24.02.2017