Неопределенная переменная в laravel (головная боль) - PullRequest
0 голосов
/ 29 марта 2020

Так что у меня была настоящая головная боль из-за этой проблемы. У меня есть sh для отображения сообщений на моей домашней странице, однако после обновления я получаю сообщение об ошибке: Неопределенная переменная: posts (View: .... $ posts не определена) Переменная необязательно в шаблоне блейда.

Мои посты появляются на других страницах, поэтому я следовал аналогичному процессу, и он должен работать. Однако это не тот случай, и это вызывает у меня настоящую головную боль.

WelcomeController. php

public function index()
{
    $posts = Post::all();
    return view('Pages.welcome')->with('posts', $posts);
}

Интернет. php

Route::get('/', 'PageController@index');
Route::get('/welcome', 'WelcomeController@index');
Route::get('/services', 'PageController@services');
Route::get('/register', 'PageController@register');
Route::get('/Create', 'PageController@Create');
Route::get('/search', 'PageController@search');
Route::get('/payment', 'PageController@Payment');

Route::resource('posts', 'PostsController');
Route::resource('search', 'SearchController');
Route::resource('reviews', 'ReviewsController');

Welcome.blade. php

    @if(count($posts) > 1)
@foreach($posts as $post)
  <h2><a href="/posts/{{$post->id}}">{{$post->title}}</a></h2>
@endforeach

@else
   </p>no posts found</p>
@endif

Если кто-то может знать, что происходит, было бы приятно, спасибо

Ответы [ 3 ]

0 голосов
/ 30 марта 2020

Я бы предложил использовать другой метод для передачи данных в ваше представление, как описано в документации Laravel здесь: https://laravel.com/docs/5.8/blade#displaying -data вместе с функцией PHP compact()

$posts = Post::all();
return view('...', compact(['posts']));

Это сделает переменную $posts доступной в вашем блэйд-представлении.

Кроме того, почему бы не использовать $posts->count() в вашем представлении вместо count($posts)? Мне больше нравится первый вариант, но я думаю, что оба прекрасно работают.

0 голосов
/ 30 марта 2020

Использование compact

public function index()
{
    $posts = Post::all();
    return view('Pages.welcome', compact('posts'));
}
0 голосов
/ 30 марта 2020

Попробуйте использовать функцию PHP compact для отправки переменной в виде коллекции. Вы отправляете, используя with, что лучше для мигания сообщений с данными:

public function index()
{
    $posts = Post::all();
    return view('Pages.welcome', compact('posts'));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...