Posted at

ViewComposer使用時の変数上書きについて

More than 3 years have passed since last update.

Laravel5系ではViewComposerを使用する事で、view(やelement)と必要なデータ設定処理を切り分ける事が出来る為Controller側からロジックを切り離せる点が魅力です。

但し、下記のように同名の変数を複数箇所で設定した際、意図しない上書きが発生するパターンがある為注意ですね。

※Laravel5.1にて試行。

※ViewComposerは公式にあるようにComposerServiceProviderを作成して設定。


同一viewへ複数ViewComposerから同名変数を設定した場合

ComposerServiceProviderにてViewComposerをview(もしくはincludeしたelement)に設定した順の最後の変数が出力されます(後勝ち)。


同一viewへControllerとViewComposerから同名変数を設定した場合

ViewComposerで設定した変数が出力されます。


viewにはControllerから、 includeしたelementにはViewComposerから同名変数を設定した場合

viewにはControllerから設定した変数、includeしたelementにはViewComposerから設定した変数が別々に出力されます(上書き無し)。


viewとincludeしたelementに、各々別のViewComposerから同名変数を設定した場合

viewとincludeしたelement各々に設定したViewComposerからの変数が別々に出力されます(上書き無し)。