Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Команда make:auth добавляет несколько путей в файл web.php для авторизации, а также копирует некоторые шаблоны в папку views/auth и welcome.blade.php, если у вас нет таких файлов, то ничего критичного не произошло
Для оживления можно просто ваш фрагмент для авторизации направить в пути из Auth::routes(); которые можно посмотреть командой php artisan route:list, а также в контроллерах в App\Http\Controllers\Auth...
Ваш код index.blade.php ( файл в котором возникает ошибка )
<div class="panel-body">
<ul class="list-group">
@foreach($movies as $movie)
@if($movie->category_id == 1)
<li class="list-group-item list-group-warning">
<span class="badge"> {{ $movie->rating }} </span>
<a href=" {{ route('filmShow',['id'=>$movie->id]) }} " target="_blank"> {{ $movie->name }} </a>
</li>
@endif
@endforeach
Предлагаю на выбор 2 решения:
1 Путь: Если хотите оставить вывод $movies на каждой странице, которая наследует index.blade.php, передавайте переменную в View Composer https://laravel.com/docs/5.7/views#view-composers, в ViewServiceProvider в методе boot напишите
View::composer('*', function ($view) {
$view->with('movies', Movie::all()); //Вместо Movie::all() ваш код для получения фильмов из БД
});
это передаст в каждый view переменную $movies, и вы сможете вывести ее используя foreach, не меняя код index.blade.php
2 Путь: если переменная $movies нужна не везде, то можно добавить проверку перед @foreach($movies as $movie):
@if(isset($movies))
@foreach ($movies as $movie)
...
@endforeach
@endif
Также можно вынести данный фрагмент в отдельный файл и подключать его только там, где необходимо: например,
movies.blade.php:
@foreach($movies as $movie)
@if($movie->category_id == 1)
<li class="list-group-item list-group-warning">
<span class="badge"> {{ $movie->rating }} </span>
<a href=" {{ route('filmShow',['id'=>$movie->id]) }} " target="_blank"> {{ $movie->name }} </a>
</li>
@endif
а затем в нужных местах подключать его:
@include(movies) // Путь до файла movies.blade.php
Что именно объяснить более детально?
Дело в том, что Ларавел пытается найти переменную $movies при каждом рендеринге blade файла, а так как вы не передаёте его в каждой функции контроллера, то ее не существует. Тут два решения: либо вынести blade с переменной movies в отдельный файл и подключать его только там, где вам нужна данная переменная, либо сделать проверку внутри перед foreach :
@if(isset($movies))
@foreach ($movies as $movie)
...
@endforeach
@endif
Страницы 1