【问题标题】:Laravel 8 problem with @include and variables from controllerLaravel 8 的 @include 问题和来自控制器的变量
【发布时间】:2021-08-11 13:55:46
【问题描述】:

当我尝试从 Pages/home 中包含主页时,控制器中的变量不会传递,并且出现此错误

$data_news 未定义 使变量在刀片中成为可选 模板。将 {{ $data_news }} 替换为 {{ $data_news ?? '' }}

,但是当我返回查看主页时,我会看到所有数据

控制器

public function pages()
{
    $data_news = DB::table('post')
    ->orderBy('id', 'DESC')
    ->limit(6)
    ->get()
    ->toArray();

    return view('Pages.home', compact('data_news'));
}

路线

Route::get('/home', 'NewsController@pages', function () {
    return view('Pages/home');
});

包含主页的主文件

<body>
    @include('Pages/home')

【问题讨论】:

  • 为什么在视图中添加@include?如果您想将数据传递给其他刀片:@include('Pages/home' , ['data_news' =&gt; $data_news]) 并将路由更改为Route::get('/home', [\App\Http\Controllers\NewsController::class, 'pages'])
  • 不适合我

标签: php laravel


【解决方案1】:

当您指向路由中的控制器时,不应定义闭包函数。更改如下:

Route::get('/home', 'NewsController@pages');

laravel 8 的注意事项:您应该将控制器类的完整命名空间放在您的路由中,因为它没有在 RouteServiceProvider 中定义,因为它曾经在低于版本 8 的 laravel 中。

Route::get('/home', [\App\Http\Controllers\NewsController::class, 'pages']);

将参数直接传递给视图

您可以从 View Composer 中受益,因为它记录在 here:

public function pages()
{
    $data_news = DB::table('post')
    ->orderBy('id', 'DESC')
    ->limit(6)
    ->get()
    ->toArray();

    \View::composer('Pages.home',function (\Illuminate\View\View $view) use($data_news) {
        $view->with('data_news', $data_news);
    });

    return view('Pages.home', compact('data_news'));
}

【讨论】:

  • 你的问题是什么?你有什么具体的错误吗?
  • 是的,查看 $data_news 是来自控制器的变量,当我将主页包含到主页文件时出现错误异常 $data_news is undefined
  • 我放了完整的命名空间。 &lt;?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\NewsController; Route::get('/', function () { return view('Templates/weball'); }); Route::get('/home', 'NewsController@pages');
  • 我添加了视图作曲家,另外,将@include('Pages/home')更改为@include('Pages.home')
  • 结果是一样的,现在我尝试使用@yield 但不适合我,我得到的网站没有任何数据
猜你喜欢
  • 2014-04-26
  • 2021-04-09
  • 2014-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-29
  • 2021-07-06
  • 2022-01-20
相关资源
最近更新 更多