Я сомневаюсь. Я проверил 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 справится с этим. Я знаю, что это работает, я должен это проверить, но какой шаблон они используют? почему можно обрабатывать динамическую переменную.
Заранее спасибо за помощь!
Второй обрабатывается 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]
Надеюсь это поможет!
Попробуйте это, чтобы передать данные в поле зрения
Route::get('about', function() {
$data['people'] = ['Eduardo', 'Paola', 'Chancho'];
return view('about')->withdata($data);
});
Попробуйте это, это работает.
Route::get('about', function() {
$people = ['Eduardo', 'Paola', 'Chancho'];
return view('about',compact('people'));
});