よろしくお願いいたします。
Laravelにて@sectionと@yieldを使った親テンプレを継承しての子テンプレへのshowメソッド呼び出しにて上記のエラーが発生しております。
まずは、正常に動作するパターンとエラーが発生するパターンを分けて記述いたします。
【正常に動作する設定】
web.php(ルーティング設定)
html
1Route::get('/','TopsController@index')->name('tops.list'); 2Route::get('/article/{id}','TopsController@show')->name('tops.article');
TopsController.php (コントローラー設定)
html
1 public function show(Request $request,$id,tops $tops) 2 { 3 $tops = tops::find($id); 4 return view('article',['tops'=>$tops]); 5 }
views/article.blade.php (view)
html
1<h1>個別情報</h1> 2 3 <p>{{ $tops->id }}</p> 4 <p>{{ $tops->name }}</p> 5 <p>{{ $tops->job }}</p> 6 <p>{{ $tops->age }}</p>
上記の設定の場合は、正常に動作し、問題なくidに応じた個別データがブラウザに表示されます。
続いて、エラーが発生するパターンです。基本的にControllerとweb.phpの設定は同じなので、
割愛いたします。
【エラーが発生するパターン】
views/common/layout.blade.php (親テンプレ)
html
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>Document</title> 7</head> 8<body> 9 <div> 10 @yield('article') 11 </div> 12</body> 13</html>
views/article.blade.php (子テンプレ)
html
1@extends('common.layout') 2@section('article') 3 <h1>個別情報</h1> 4 5 <p>{{ $tops->id }}</p> 6 <p>{{ $tops->name }}</p> 7 <p>{{ $tops->job }}</p> 8 <p>{{ $tops->age }}</p> 9 10@endsection
上記のパターンで親テンプレから継承しつつ子テンプレをshowメソッドにて呼び出した場合に、エラー文
html
1"Trying to get property 'id' of non-object (View: /Applications/MAMP/htdocs/for-mom/resources/views/common/layout.blade.php) "
が発生してしまいます。
オブジェクト化されていないようなことが書かれておりますが、正常に動作するパターンの際にはメソッド内にnewなどでの実体化などを行っておりませんでしたので、なぜエラーが発生してしまうのかわかりません、、、
アドバイスのほどいただけますと幸いに存じます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/06/08 10:57
2020/06/08 11:02
退会済みユーザー
2020/06/08 11:07
2020/06/08 14:56
退会済みユーザー
2020/06/09 08:43
退会済みユーザー
2020/06/09 08:43
2020/06/09 09:12