Laravel, передайте переменную для просмотра

Я сомневаюсь. Я проверил laracasts, и они показывают несколько примеров передачи переменных из маршрутизатора в представление:

Route::get('about', function() {
$people = ['Eduardo', 'Paola', 'Chancho'];
return view('about')->with('people', $people);
});

Route::get('about', function() {
$people = ['Eduardo', 'Paola', 'Carlos'];
return view('about')->withPeople($people);
});

Второй пример, я не уверен, как Laravel справится с этим. Я знаю, что это работает, я должен это проверить, но какой шаблон они используют? почему можно обрабатывать динамическую переменную.

Заранее спасибо за помощь!

0

Решение

Второй обрабатывается Laravel через php __вызов магический метод. Этот метод перенаправляет все методы, которые начинаются с ‘with’, на метод with через этот код в Illuminate\View\View учебный класс:

public function __call($method, $parameters)
{
if (Str::startsWith($method, 'with')) {
return $this->with(Str::snake(substr($method, 4)), $parameters[0]);
}
throw new BadMethodCallException("Method [$method] does not exist on view.");
}

Как вы можете видеть, если метод начинается с «с» (Str::startsWith($method, 'with')Ларавел перенаправляет его на метод return $this->with приняв первый параметр в качестве строки, которая следует «с» Str::snake(substr($method, 4)) и второй параметр в качестве первого параметра, который был принят $parameters[0]

Надеюсь это поможет!

2

Другие решения

Попробуйте это, чтобы передать данные в поле зрения

Route::get('about', function() {
$data['people'] = ['Eduardo', 'Paola', 'Chancho'];
return view('about')->withdata($data);
});
0

Попробуйте это, это работает.

Route::get('about', function() {
$people = ['Eduardo', 'Paola', 'Chancho'];
return view('about',compact('people'));
});
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector