Hi Sorry iam new in laravel , iam tring to display data from DB but i get error ($reviews is undefined) in home.blade . Plz help "
web.php :
use App\Http\Controllers\ReviewController; use Illuminate\Support\Facades\Route; Route::get('/', function () {return view('home');});Route::get('/car', function () {return view('car');});Route::post('home',[ReviewController::class, 'reviewstore'])->name('review.store');
home.blade :
<br/> @foreach ($reviews as $review)
<li>
{{ $review['name']}}
</li>
<li>
{{$review['comment']}}
</li>
<li>
{{$review['rating']}}
</li>
@endforeach
ReviewController :
namespace App\Http\Controllers; use App\Models\ReviewRating; use Illuminate\Http\Request; class ReviewController extends Controller { public function index(){
$reviews = ReviewRating::all();
return view('home', ['reviews' => $reviews]);
}
public function reviewstore(Request $request){
$review = new ReviewRating();
$review->name = strip_tags($request->input('name'));
$review->comments = strip_tags($request->input('comment'));
$review->star_rating = strip_tags($request->input('rating'));
$review->save();
return redirect()->back()->with('flash_msg_success','Your review has been submitted Successfully,');
} }
My Model :
namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class ReviewRating extends Model {use HasFactory;
protected $fillable = [
'id',
'name',
'comments',
'star_rating',
];}
>Solution :
In your Route::get('/', function()
code, you don’t call the ReviewController index method.
Change it to this and you should be ok
Route::get('/', [ReviewController::class, 'index']);
If you want to keep your ‘/’ route definition like it is then add the ‘reviews’ variable
Documented here.
https://laravel.com/docs/10.x/views#passing-data-to-views
Route::get('/', function () {
$reviews = ReviewRating::all();
return view('home', ['reviews' => $reviews]);
});