переменные не передаются для просмотра в laravel из контроллера - PullRequest
2 голосов
/ 05 марта 2020

Переменные, не передаваемые в представления в проекте laravel с контроллера. получение неопределенной переменной: ошибка заголовка.

function index()
{

    $data = array(
        'title' => 'Font Awesome & Material Design Icons',
        'description' => 'Create your project with Font Awesome & Material Design Icons',
        'seo_keywords' => 'Create your project with Font Awesome & Material Design Icons',
        'data' => DB::table('fontawesomeicons')->orderBy('id', 'asc')->paginate(50),
    );   

    // $data = DB::table('fontawesomeicons')->orderBy('id', 'asc')->paginate(50);
    return view('pagination', compact('data'));
}

Ответы [ 4 ]

2 голосов
/ 05 марта 2020

Функция compact создаст массив с data в качестве единственного ключа и массивом в качестве его значения. Это не то, что вы должны делать, вам нужен массив, который напрямую содержит переменные, которые вам нужны в вашем представлении.

Таким образом, вы можете просто передать массив данных в качестве второго атрибута для функции view().

return view('pagination', $data);

Или, если вы действительно хотите отправить весь массив $data как целую переменную, вы должны использовать индексы массива в своих блейд-представлениях:

{{ $data['title'] }}
1 голос
/ 05 марта 2020

Попробуйте

return view('pagination')->with(compact('data'));

Или попробуйте

$title = 'Font Awesome & Material Design Icons';
$description = 'Create your project with Font Awesome & Material Design Icons';
$seo_keywords = 'Create your project with Font Awesome & Material Design Icons';
$data = DB::table('fontawesomeicons')->orderBy('id', 'asc')->paginate(50);

return view('pagination',compac(['title','description','seo_keywords','data']));
0 голосов
/ 05 марта 2020

вы можете попробовать что-то вроде этого:

function index()
{

    $data['data'] = array(
        'title' => 'Font Awesome & Material Design Icons',
        'description' => 'Create your project with Font Awesome & Material Design Icons',
        'seo_keywords' => 'Create your project with Font Awesome & Material Design Icons',
        'data' => DB::table('fontawesomeicons')->orderBy('id', 'asc')->paginate(50),
    );   

    // $data = DB::table('fontawesomeicons')->orderBy('id', 'asc')->paginate(50);
    return view('pagination', $data);
}
0 голосов
/ 05 марта 2020

compact('data') возвращает массив следующим образом: ['data' => $data]

Таким образом, return view('pagination', compact('data')); код эквивалентен этому:

return view('pagination', ['data' => $data]);

И у вас есть доступ к переменной контроллера, как это: $data['title'], $data['description'] ... Вы должны передавать данные в поле зрения вместо compact('data'):

return view('pagination', $data);

Или можете использовать

return view('pagination', compact('data')['data']);

Но это не имеет смысла

...