battrack
@battrack

Как в laravel 5 в классе сервис провайдера использовать методы любой из своих созданных моделей?

Я пытаюсь создать view composer. Для этого создаю свой сервис провайдер, подключаю его - все по инструкции.
И внутри метода boot создаю композер

view()->composer('lalalala', function($view) {

});


Внутри композера мне нужно вызвать один из методов моей модели News
Для этого я через use подключаю модель News, т.е.

use App\News;

и в функции композера делаю так:
view()->composer('lalalala', function($view) {
     $new = new News; // создаю объект класса News
     $data = $news -> getNews(); // получаю список новостей
     $view ->with('news', $data); // передаю во вьюшку
});


Вопрос вот в чем: я пытался в данном случае обойтись без создания объекта, а сделать инъекцию зависимости таким образом:

public function boot(News $new)
{
     view()->composer('lalalala', function($view) {
          $new = new News; // создаю объект класса News
          $data = $news -> getNews(); // получаю список новостей
          $view ->with('news', $data); // передаю во вьюшку
     });
}


Но это не работает. В контроллерах такой ход работает, а тут нет. Может кто-нибудь подсказать почему?
  • Вопрос задан
  • 432 просмотра
Решения вопроса 1
Denormalization
@Denormalization
Потому что new News вызывается в замыкании и нужно писать так:
view()->composer('lalalala', function($view) use ($new) {
          $data = $new -> getNews(); // получаю список новостей
          $view ->with('news', $data); // передаю во вьюшку
     });
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы