Laravel: неопределенная переменная: posts (Просмотр: cant решить) - PullRequest
0 голосов
/ 04 апреля 2020

Итак, у меня есть проблема, которая беспокоила меня уже несколько дней. Я хочу, чтобы мои сообщения отображались на моей домашней странице, которая уже отображается на других моих страницах. Я думаю, что я нашел, почему информация не отображается, и это связано с маршрутами страницы. Представление выглядит нормально и работает правильно, однако проблема заключается в моих контроллерах:

Web. php

 Route::get('/', 'PageController@index');
 Route::get('/welcome', 'HomeController@index1');
 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');
 Route::resource('postings', 'HomeController');

HomeController. php

    public function index()
{
    return view('home');
}
public function index1()
{
    $postings = Post::all();
    return view('Pages.welcome', compact('postings'));
}

Welcome.blade. php

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

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

Проблема в моем WEB. PHP. PageController@index направляет страницу на домашнюю страницу, где HomeController является контроллером, который содержит индекс. Затем я решил создать функцию в этом HomeController, которая позволяет мне отображать сообщения, однако я получаю сообщение об ошибке «неопределенная ошибка». Чтобы сделать вывод, как вставить функцию в существующий контроллер, у которого уже есть индекс.

1 Ответ

0 голосов
/ 04 апреля 2020

У вас нет переменной $postings в вашем представлении, не обращайтесь к ней. Это не значит, что вы не можете делать то, что хотите.

Вы можете злоупотреблять тем, как разрешаются заявления. Если в вашем операторе if есть оператор &&, он не будет проверять вторичные условия, если первое условие не выполнено.

Сбой

@if ($postings)

Будет работать

@if (false && $postings)

Чтобы проверить, присутствует ли переменная без доступа к ней, вы можете использовать isset(), то есть функцию PHP. Это создаст предпочтительный оператор, который не будет обращаться к $postings, если его там нет. Поэтому попробуйте следующий код:

 @if(isset($postings) && count($postings) > 1)
     @foreach($postings as $post)
        <h2><a href="/posts/{{$post->id}}">{{$post->title}}</a></h2>
     @endforeach
 @else
     </p>no posts found</p>
 @endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...