在Laravel中向视图添加多个变量

时间:2019-01-15 10:50:20

标签: laravel laravel-blade

$header = DB::select("SELECT COLUMN_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'tableOne'");
$secheader = DB::select("SELECT COLUMN_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'tableTwo'");

$variables = DB::table('tableThird')->get();
$variables = json_decode(json_encode($variables, true));
$tbHeading = json_decode(json_encode($header, true)); //json object

return view('admin/crosstabdata', compact('secheader','tbHeading','variables'));

当我打印所有三个变量以查看(crosstabdata.blade.php)文件时,它说:

  

secheader变量不存在。

5 个答案:

答案 0 :(得分:0)

尝试一下;

s1

希望这种方法有所帮助。

答案 1 :(得分:0)

尝试这种方式:

return View::make('admin.crosstabdata')
           ->with(compact('secheader', 'tbHeading', 'variables'));

答案 2 :(得分:0)

您的代码应该可以使用。也许问题出在视图上。

作为替代方案,您可以将变量传递给视图,如下所示:

$secheader = /** ... */;
$variables = /** ... */;
$tbHeading = /** ... */;

return view('admin.crosstabdata')
           ->with('secheader', $secheader)
           ->with('variables', $variables)
           ->with('tbHeading', $tbHeading);

然后在您看来,您可以像$secheader$variables$tbHeading那样访问它们。

答案 3 :(得分:0)

您可以将关联数组传递给with()方法,以便您的return语句如下所示:

return view('admin/crosstabdata')->with(['secheader' => $secheader, 'tbHeading' => $tbHeading, ...]);

答案 4 :(得分:-1)

我没有尝试直接传递三个变量,但这是传递两个变量的一种方法

 return view('admin/crosstabdata', compact('secheader'))->with('tbHeading', $tbHeading);

我也看到了这个问题,我认为这可能会帮助您将其作为数组并将其作为一个变量传递,请参见

Laravel - Pass more than one variable to view