Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 12.12.2016 12:40:29

Обращение к методу модели из контроллера

Добрый день, камрады, нужна ваша помощь.

Имею свой метод (deletePage) в модели (Pages), который рекурсивно удаляет дочерние записи таблицы.

Как правильно обратиться к этому методу? Создавать в контроллере экземпляр объекта  $pages = new Pages; $pages->detelePage(); ?

В данный момент метод модели deletePage является protected и я могу к нему обратиться с контроллера как к статическому (Pages::deletePage()), но я не уверен, что это верное решение, т.к. метод не статический.

Подскажите как правильно обращаться к моделям из контроллеров, в интернете много "уроков" и др. инфы где часть бизнес логики располагается в контроллере, чего я хочу максимально избежать.

Не в сети

#2 12.12.2016 13:09:21

Re: Обращение к методу модели из контроллера

Я объявляю методы, которые вызываю из контроллера и других классов, как 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)

Не в сети

#3 12.12.2016 13:50:09

Re: Обращение к методу модели из контроллера

Я правильно вас понял, при

public function __construct(Page $page)
{
    $this->page = $page;
}

в
protected $page; у меня уже будет объект модели Page? или мне его нужно передавать как-то?

Не в сети

#4 12.12.2016 13:57:22

Re: Обращение к методу модели из контроллера

Dobrik пишет:

Я правильно вас понял, при в protected $page; у меня уже будет объект модели Page? или мне его нужно передавать как-то?

Да, правильно. Подробнее можно почитать в документации.

Не в сети

#5 31.05.2018 18:27:54

Re: Обращение к методу модели из контроллера

как вариант, можно тупо дописать в метод контроллера нужную модель и юзать без конструктора..

    public function test(Request $request, Clock $clock, $id, false, блаблабла){
        return  $clock->method($request);
    }

Не в сети

Подвал раздела