前提・実現したいこと
LaravelのView Composerを使用して変数を複数のviewで使いまわしたいです
該当のソースコード
App\Providers\ViewServiceProvider.php
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\View; class ViewServiceProvider extends ServiceProvider { /** * Bootstrap services. * * @return void */ public function boot() { View::composer('top','App\Htpp\ViewComposers\PopularBooksComposer'); } /** * Register services. * * @return void */ public function register() { // } }
App\Http\ViewComposers\PopularBooksComposer.php
<?php namespace App\Http\ViewComposers; use Illuminate\View\View; use App\Book; class PopularBooksComposer { protected $books; public function __construct() { $this->books = Book::all(); } public function compose(View $view) { $view->with('popu_books',$this->books); } }
config\app.php
App\Providers\ViewServiceProvider::class
を追加
top.blade.php
<html> <head> </head> <body> @foreach($popu_books as $popu_book) {{ $popu_book }} @endforeach </body> </html>
エラー
上記のコードでtop.blade.phpにアクセスすると
Undefined variable: popu_booksとなります
疑問
ViewServiceProvider.phpのViewComposerのtopを*に変更しても動作しないのでPopularBooksComposerの処理自体がされていない可能性があります
補足情報(FW/ツールのバージョンなど)
Laravel5.7
回答1件
あなたの回答
tips
プレビュー