View Laravel 5.6中的未定义变量

时间:2018-12-09 20:53:06

标签: php laravel laravel-5.6

我尝试解决此问题并阅读了许多文章,但没有任何帮助,请尝试解决我的问题,因为我是laravel的新手!

这是我位于view/posts的Index.blade.view

    <!DOCTYPE html>
<html>
<head>
    <title>Post</title>
</head>
<body>
<ul>
    <?php 
        foreach ($posts as $post) {
        echo "<li><a href = 'post/$post->$id'>".$post->$title."</a></li>";
        }
    ?>
</ul>
</body>
</html>

PostController

<?php

namespace App\Http\Controllers;
use App\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
    public function index(){
        $posts = Post::all();
        return view('posts.index',compact($posts));
    }

    public function showPost($id){
        $post = Post::find($id);
        return view('posts.post',compact($post));
    }
}

我读了很多与此相关的文章,但没有任何帮助,我在做什么错? 这就是我面临的问题:未定义的变量:帖子(视图:C:\ xampp \ htdocs \ firstApplication \ resources \ views \ posts \ index.blade.php)

2 个答案:

答案 0 :(得分:1)

假设您还有另一个保存数据的变量,那么索引方法应类似于:

$post->id而不是$post->$id的身份访问$ post的内容

 public function index(){
     $posts = Post::all();
     $someData = []; // extra variable
     return view('posts.index',compact('posts','someData'));
 }

要进行的另一项更改是在视图文件中: 附带说明:您不必使用传统的PHP标记和foreach,而是可以使用Laravel的干净简洁的方法,如下所示:

替换您的代码块:

<?php 
   foreach ($posts as $post) {
      echo "<li><a href = 'post/$post->$id'>".$post->$title."</a></li>";
   }
?>

更新的代码:

@foreach($posts as $post)
    <li><a href = "{{ url('post/'. $post->id) }}" </a></li>
@endforeach

答案 1 :(得分:0)

将视图更改为

</head>
<body>
<ul>
    <?php 
        foreach ($posts as $post) {
        echo "<li><a href = 'post/$post->id'>".$post->title."</a></li>";
        }
    ?>
</ul>
</body>
</html>

$post->$id更改为$post->id,将$post->$title更改为$post->title 以及compact($posts)compact('posts')compact($post)compact('post')