【问题标题】:Undefined variable: post (View: E:\xamp\htdocs\lsapp\resources\views\posts\index.blade.php)未定义变量:post(查看:E:\xamp\htdocs\lsapp\resources\views\posts\index.blade.php)
【发布时间】:2021-07-06 15:23:07
【问题描述】:

我是 laravel 的新手,虽然尝试了所有可能的网站和谷歌搜索,但还是遇到了这个错误。我什至尝试过堆栈溢出的先前查询解决方案,但无法解决。

这是我的 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');

这是我的路线

请帮忙解决这个问题,我有很多问题

【问题讨论】:

    标签: laravel


    【解决方案1】:

    您的代码存在许多问题。我建议你通过laravel documentationfirst 2 PSRs

    由于错误清楚地表明视图中没有变量 $post。否则,您不会发送 $post 变量,而如果您发送带有大写 P 的 $post 变量,但您在视图中使用小写 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'] );
    }
    

    【讨论】:

    • Rafay Hassan ,我刚刚尝试使用@if($post),但仍然显示相同的错误
    • @SagarBasnet 我现在更新了答案检查。让我知道您的错误仍然存​​在
    • @SagarBasnet 如果您的问题已解决,请接受答案。点击投票箭头下方的复选标记
    • $post 而不是'$post'
    【解决方案2】:

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

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

    但是你很可能在你想创建一个新帖子的时候得到这个错误,所以这里执行了store函数,而控制器中没有执行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));
    }
    

    对不起,打字问题,我是波斯语❤

    【讨论】:

      猜你喜欢
      • 2019-08-06
      • 2019-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      相关资源
      最近更新 更多