Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Добрый день, камрады, нужна ваша помощь.
Имею свой метод (deletePage) в модели (Pages), который рекурсивно удаляет дочерние записи таблицы.
Как правильно обратиться к этому методу? Создавать в контроллере экземпляр объекта $pages = new Pages; $pages->detelePage(); ?
В данный момент метод модели deletePage является protected и я могу к нему обратиться с контроллера как к статическому (Pages::deletePage()), но я не уверен, что это верное решение, т.к. метод не статический.
Подскажите как правильно обращаться к моделям из контроллеров, в интернете много "уроков" и др. инфы где часть бизнес логики располагается в контроллере, чего я хочу максимально избежать.
Не в сети
Я объявляю методы, которые вызываю из контроллера и других классов, как public. Потом инъекция модели через конструктор и вызов метода:
protected $page;
public function __construct(Page $page)
{
$this->page = $page;
}
public function deletePages()
{
$this->delete->deletePages();
return redirect()->back()->with('message', trans('app.pages-deleted'));
}
В контроллере вообще должно быть минимум логики, но почти все пишут логику в контроллере, потому что все книги, видео касты и туториалы, ориентированные на новичков, приводят именно такие примеры. На мой взгляд, более грамотно как-то так:
public function edit()
{
return view('client.profile.edit', [
'user' => $this->user->loadFieldsCountries(),
'industriesList' => $this->industry->pluckIndustries(),
'countriesList' => $this->country->pluckCountries(),
'fieldsList' => $this->field->pluckLegalFields(),
]);
}
Изменено AlexeyMezenin (12.12.2016 13:20:37)
Не в сети
Я правильно вас понял, при
public function __construct(Page $page)
{
$this->page = $page;
}
в
protected $page; у меня уже будет объект модели Page? или мне его нужно передавать как-то?
Не в сети
Я правильно вас понял, при в protected $page; у меня уже будет объект модели Page? или мне его нужно передавать как-то?
Да, правильно. Подробнее можно почитать в документации.
Не в сети
как вариант, можно тупо дописать в метод контроллера нужную модель и юзать без конструктора..
public function test(Request $request, Clock $clock, $id, false, блаблабла){
return $clock->method($request);
}
Не в сети
Страницы 1