Моя версия Laravel: 5.8.23
В соответствии с документацией Laravel View Composer , чтобы присоединить композитор представления к нескольким представлениям одновременно, передайте представления в массиве внутри первого аргумента, например:
View::composer(['profile', 'dashboard'],
'App\Http\View\Composers\MyViewComposer');
Когда я пытаюсь использовать подобное, мое второе значение в массиве не получает значения, которые я передал в AnimalComposer.php
Мой код:
View::composer(['animal.edit', ' animal.create'],
'App\Http\Views\Composers\AnimalComposer'
);
Я получаю errorException в animal / create.blade.php
Неопределенная переменная: animalType
Но если я использую несколько View :: composer для отправки данных в blade.php, он работает нормально.
public function boot()
{
View::composer('animal.edit',
'App\Http\Views\Composers\AnimalComposer'
);
View::composer('animal.create',
'App\Http\Views\Composers\AnimalComposer'
);
}
РЕДАКТИРОВАТЬ Файл My AnimalComposer.php
//AnimalComposer.php
namespace App\Http\Views\Composers;
use App\AnimalType;
use App\Helpers\GenderHelper;
class AnimalComposer
{
public function compose($view)
{
$animalType = AnimalType::pluck('name', 'id');
$genderLists = GenderHelper::getGenderSelectArray();
$view->with('animalType', $animalType)
->with('genderLists', $genderLists);
}
}
Я что-то упустил? Нужно ли использовать View :: composer каждый раз, когда я отправляю AnimalComposer в представление? Разве Laravel теперь не поддерживает множественные представления внутри массива?