当用户未在Laravel 5.2中登录时,我尝试发布帖子时出错

时间:2016-06-09 14:44:46

标签: php sql authentication laravel-5.2

我正在创建一个博客,但是当用户登录意味着他们已通过身份验证时,我可以在我的信息中心看到帖子,但是,当我退出并重定向到信息中心时,我收到错误消息“试图获取非对象的财产........“

下面是我的代码

public function getDashboard() {
      $posts = Post::orderBy('created_at', 'desc')->get();
      return view('welcome, [
              'posts' => $posts,
              'user' => Auth::user()
      ]);
}

 @foreach($posts as $post)
            <div class="post-preview" data-postid="{{ $post->id }}">
                <a href="#">
                    <h2 class="post-title">
                        {{ $post->header }}
                    </h2>
                    <h3 class="post-subtitle">
                        {{ $post->body }}
                    </h3>
                </a>
                <p class="post-meta">Posted by <a href="#">{{ $post->user->username }}</a> on {{ $post->created_at }}</p>
            </div>
            <hr>
            @endforeach

请帮忙。

由于

1 个答案:

答案 0 :(得分:0)

您只需要检查用户是否已登录

模板文件中的

@if($user)
    @foreach($posts as $post)
        <div class="post-preview" data-postid="{{ $post->id }}">
            <a href="#">
                <h2 class="post-title">
                    {{ $post->header }}
                </h2>
                <h3 class="post-subtitle">
                    {{ $post->body }}
                </h3>
            </a>
            <p class="post-meta">Posted by <a href="#">{{ $post->user->username }}</a> on {{ $post->created_at }}</p>
        </div>
        <hr>
    @endforeach
@endif

或在控制器文件中:

public function getDashboard() {
      $posts = Post::orderBy('created_at', 'desc')->get();
      return view('welcome', [
              'posts' => (Auth::user()) ? $posts : [],
              'user' => Auth::user()
      ]);
}