未定义的变量:发布(查看:E:\ xamp \ htdocs \ lsapp \ resources \ views \ posts \ index.blade.php)

时间:2018-12-08 16:01:58

标签: laravel

我是laravel的新手,尽管尝试了所有可能的网站和Google搜索,但仍收到此错误。我什至从堆栈溢出中尝试了以前的查询解决方案,但无法解决。

这是我的PostController.php:

`public function getData()
{
    $post['post']=DB::table('students')->get();
    if(count($post)>0){
        return view('index',['Post'=>'$post'] );
    }
    else{
        return view('index');
    }
}`
this is my controller

这是我的index.blade.php:

`@foreach($post as $value)
 <tr>
 <td>{{$value->id}}</td>
 <td>{{$value->name}}</td>
 <td>{{$value->address}}</td>
 <td>{{$value->number}}</td>
 <td><a href="" ><button>Edit</button></a>&nbsp; <a href="" > 
 <button>Delete</button></a></td>
 </tr>`

这是我的刀刃:

Route::get('/index','PostController@getData');

这是我的路线

请在此查询中提供帮助,我遇到很多问题

2 个答案:

答案 0 :(得分:2)

您的代码有很多问题。我建议您通过laravel documentationfirst 2 PSRs

由于错误明确指出,视图中没有变量 $ post 。否则,您不会发送 $ post 变量,而如果您发送的$ post变量带有大写字母P,但在视图中使用小写p进行访问。因此,该变量在视图中无论如何都不可用,这就是它显示该错误的原因。

PHP变量区分大小写,并且不要在传递给视图的参数中使用php变量(带$符号的引号)。

return view('index',['Post'=>'$post'] );

以上声明应写为

 return view('index',['post'=>$post] );

还会更新您的控制器方法,我不知道您为什么要使用关联数组($ post ['post'])。

public function getData()
{
    $post = DB::table('students')->get();
    return view('index',['post'=>'$post'] );
}

答案 1 :(得分:0)

我发现了这个问题。您在 index 函数中发送 posts 变量。

public function index(){
    $posts = Post::all();
    return view('posts.index',compact('posts'));
}

但是最有可能是你想新建帖子的时候遇到这个错误,所以这里执行的是store函数,而controller中没有执行index函数,因为store函数是负责存储表单信息的。然后你编辑这个函数如下。

public function store(Request $request) {
    $post = new Post();
    $post->title = $request->input("title");
    $post->description = $request->input("description");
    $post->save();


    $posts = Post::all(); //Send posts in compact
    return view("posts.index", compact($posts));
}

请原谅我打字的问题,我会说波斯语❤