【问题标题】:Adding Multiple Variables to a View in Laravel在 Laravel 视图中添加多个变量
【发布时间】:2019-06-09 09:04:06
【问题描述】:
$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 变量不存在。

【问题讨论】:

  • 请在此处输入您的查看代码。而且我认为最好把最后一行的admin/crosstabdata改成admin.crosstabdata

标签: laravel laravel-blade


【解决方案1】:

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

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

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

Laravel - Pass more than one variable to view

【讨论】:

  • 我需要多个变量才能进入视图。
  • 您是否可以通过将这些变量作为数组传递并通过数组循环并再次循环每个变量,然后您会得到结果,请查看链接,您会明白
【解决方案2】:

试试这个;

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

$variables = DB::table('tableThird')->get();
$data['variables'] = json_decode(json_encode($variables, true));
$data['tbHeading'] = json_decode(json_encode($header, true));

return view('admin/crosstabdata', $data);

希望这种方法有所帮助。

【讨论】:

  • 我需要三个变量来传递
  • 从你的代码中,有哪些变量?我认为您正在发送 secheader、变量和 tbHeading
  • dd($secheader) 返回什么?
  • 未定义变量:secheader
【解决方案3】:

试试这个方法:

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

【讨论】:

    【解决方案4】:

    您的代码应该可以工作。也许问题出在视图中。

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

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

    然后在您的视图中,您可以像$secheader$variables$tbHeading 一样访问它们。

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-21
        • 2019-01-21
        • 2015-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多