从控制器传递值以查看未定义的变量错误

时间:2020-01-17 17:20:38

标签: laravel

public function welcome()
{
    $posts = new Post;
    $data = $posts->data();

    return view('welcome', compact("data"));
}

发布模型中的方法:

public function data()
{ 
    return ['name ' => 'ABC', 'company'=> 'com']; 
}

这是控制器

{{ $data['name'] }}
{{ $data['company'] }}

这是视图

我已将值从控制器传递给视图,并得到未定义的变量错误

3 个答案:

答案 0 :(得分:2)

首先$ posts = new Post不会返回数据,而是返回Post类的实例,而是查找类似这样的帖子。

$posts = Post::find(1);

您可以像这样

public function welcome()
{
     $posts = Post::find(1);
     $data['data'] = $posts->my_relationship;

     return view('welcome', $data);
}

并在视图中调用它

{{$data->name}}
{{$data->company}}

假设my_relationship是附加到您的帖子模型的关系。否则,您可以直接将该帖子传递给视图。像这样

public function welcome()
{
     $posts = Post::find(1);
     $data['data'] = $posts;

     return view('welcome', $data);
}

假设姓名和公司字段位于您的帖子表中

答案 1 :(得分:0)

将模型中的功能更改为此。

public function scopeData() {
   return ['name ' => 'ABC', 'company'=> 'com'];
}

像这样在您的控制器中调用它。

public function welcome()
{
     $post = Post::data();
     $data['data'] = $post;

     return view('welcome', $data);
}

答案 2 :(得分:0)

您的name方法(data()中的索引'name '中有一个空格。这不会产生undefined variable error,但是,当您尝试访问Undefined index而不是视图中的'name'时,它将产生'name '错误。

要解决此问题,您只需能够在data()方法中删除空格:

public function data()
{ 
    return ['name' => 'ABC', 'company'=> 'com']; 
}
相关问题