Добавление нескольких переменных в представление в Laravel - PullRequest
0 голосов
/ 15 января 2019
$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 голосов
/ 15 января 2019

Вы можете передать ассоциативный массив методу with(), чтобы ваш оператор возврата мог выглядеть так:

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

0 голосов
/ 15 января 2019

Ваш код должен работать. Может проблема в видении.

В качестве альтернативы вы можете передавать переменные в ваши представления следующим образом:

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

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

Тогда, по вашему мнению, вы можете получить к ним доступ как $secheader, $variables & $tbHeading.

0 голосов
/ 15 января 2019

Попробуйте это;

$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);

Надеюсь, что этот подход поможет.

0 голосов
/ 15 января 2019

попробуйте так:

return View::make('admin.crosstabdata')
           ->with(compact('secheader', 'tbHeading', 'variables'));
0 голосов
/ 15 января 2019

я не пытался передать три vatiables напрямую, но вот способ передать две переменные

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

также я видел этот вопрос в стеке над потоком. Думаю, он может помочь вам сделать его массивом и передать его как одну переменную, см. Здесь

Laravel - передать более одной переменной для просмотра

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...