Как работает Laravel, когда вы передаете данные в представление, они будут доступны только для этого представления и других блейд-файлов, которые вы включаете непосредственно в это представление, поскольку это будет в их области действия, тогда как файл template.blade.php
не't.
Насколько я знаю, вы можете либо просто получить доступ к переменной $cat
из представления индекса, либо перейти к вашему BaseController, который будет находиться в этом каталоге:
app \ Http \ Controllers \ Controller.php
И в вашем конструкторе может быть что-то вроде этого:
public function __construct()
{
$cats = Cat::all();
View::share(['cats' => $cats]);
}
Словопредупреждение, второй параметр означает, что переменная $cats
будет доступна при каждой загрузке страницы, инициируемой любым контроллером, который расширяет базовый контроллер, так что это не самый эффективный подход, так как это означает, что база данных запрашивается каждыйвремя загрузки страницы для всех записей вашей модели Cat, что может не потребоваться при каждом запросе.
Хотя, говоря, что выВы также можете просто использовать конструктор для CatController
таким же образом, чтобы, по крайней мере, ограничить загрузку модели Cat для запросов к этому контроллеру.
В моем варианте кажется, что это может стоитьучитывая реструктуризацию ваших шаблонов блейдов, чтобы сделать использование переменной $cats
более доступным из представления index.blade.php
.
Надеюсь, это поможет!