グロージャでのコンポーザ処理で値の受け渡しをしたい
書籍の「PHPフレームワークLarabel入門第2版」を使用して学習をしています。
グロージャでのコンポーザ処理を作るという項目があり、
サンプルコードを動かしているのですが、サービスプロバイダを登録することができません。
テンプレートを表示しようとしたところ、以下のエラーメッセージが発生しました。
Larabel6.0、XAMPPを使用しています。
発生している問題・エラーメッセージ
Undefined variable: view_message
該当のソースコード
//app.php 'providers' => [ ~配列の末尾に追加~ App\Providers\HelloServiceProvider::Class, ],
//index.blade.php @extends('layouts.helloapp') @section('title', 'Index') @section('menubar') インデックスページ @endsection @section('content') <p>ここが本文のコンテンツです。</p> <p>Controller value<br>'message' = {{$message}}</p> <p>ViewComposer value<br>'view_message' = {{$view_message}}</p> @endsection @section('footer') copyright 2020 tuyano. @endsection
//HelloServiceProvider.php namespace App\Providers; use Illuminate\Support\Facades\View; use Illuminate\Support\ServiceProvider; class HelloServiceProvider extends ServiceProvider { public function boot() { View::composer( 'hello.index', function($view){ $view->with('view_message', 'composer message!'); } ); } }
//web.php Route::get('hello', 'App\Http\Controllers\HelloController@index');
//HelloController.php public function index() { return view('hello.index', ['message'=>'Hello!']); }
試したこと
http://localhost:8000/helloにアクセスしたときに、index.blade.phpの{{$view_message}}に値を渡して表示させたいです。
未定義のエラーだったためindex.blade.phpの<p>ViewComposer value<br>'view_message' = {{$view_message}}</p>の部分を削除して、再度URLにアクセスしたところページが表示されました。
サービスプロバイダ登録で何か間違っているのではないか?と思うのですが、原因を見つけることができません。
原因、確認方法をご教授いただけますと幸いです。