如何从主视图 return table 数据 Laravel 5.7

How to return table data from home view Laravel 5.7

我确定这是一个新手问题,但现在困扰我一段时间了。

我有一个推荐table,我正在尝试在主页上输出一些推荐。

这就是我正在做的事情。

路线:(web.php)

Route::get('/', function () {
    return view('home');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');

家庭控制器:

use DB;
use App\Testimonial;
...
public function index()
{
    $testimonial = DB::table('testimonials')->orderBy('id', 'DESC')->get();
    return view('home', compact('testimonials'));
}

主视图/Blade:

@foreach ($testimonial as $test)
<h4>{{$test->first_name}}</h4>
<p>{{$test->testimonial}}</p>
@endforeach

错误:

Undefined variable: testimonial

对此问题的任何见解都会有所帮助。

'/' 的路由直接进入 'home' 视图,而不通过控制器。更改该路由以转到相同的控制器方法将修复它。

Route::get('/', 'HomeController@index');

控制器和视图中的变量名也需要匹配。

控制器

use DB;
use App\Testimonial;
...
public function index()
{
    $testimonials = DB::table('testimonials')->orderBy('id', 'DESC')->get();
    return view('home', compact('testimonials'));
}

查看

@foreach ($testimonials as $test)
    <h4>{{$test->first_name}}</h4>
    <p>{{$test->testimonial}}</p>
@endforeach

假设您的数据库查询实际上返回了结果,这应该可行。如果仍然无法正常工作,请在分配后尝试检查 $testimonials 变量中的内容。

dd($testimonials);

您 return 设置了错误的变量,请像这样更改您的 return:

return view('home', compact('testimonial'));

那就一切都好。

由于您的变量名为 $testimonial,因此您应该传递:

// singular testimonial
return view('home', compact('testimonial'));

那么,您可以使用:

@foreach ($testimonial as $test)