Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Michael Fayez's avatar

Undefined variable $topbars

Kindly help :-


namespace App\Http\Controllers\Frontend;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Topbar;

class TopbarController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
      
       
        $topbar   = Topbar::latest()->get();
    
        return view ('partial.topbar', compact('topbar'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show(Topbar $topbar)
    {
        $topbar   = Topbar::latest()->get();
    
        return view ('partial.topbar', compact('topbar'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}
  <!--Header Top-->
        <div class="header-top">
            <div class="auto-container clearfix">
                <div class="top-left clearfix">
                    <ul class="list">
					     @foreach($topbars as $topbar)
						<li><span class="icon fas fa-envelope"></span> {{ $topbar->phone }} </li>
						<li><span class="icon fas fa-phone"></span> <a href="tel:+555–123–2323"> {{ $topbar->address }}</a></li>
				
					</ul>
                </div>
                <div class="top-right clearfix">
                    <ul class="social-icons">
						<li><a href=" {{ $topbar->facebook }}"><span class="fab fa-facebook-f"></span></a></li>
						<li><a href="{{ $topbar->google }}"><span class="fab fa-google"></span></a></li>
						<li><a href="{{ $topbar->twitter }}"><span class="fab fa-twitter"></span></a></li>
						<li><a href="{{ $topbar->skype }}"><span class="fab fa-skype"></span></a></li>
						<li><a href="{{ $topbar->linkedin }}"><span class="fab fa-linkedin"></span></a></li>
                        @endforeach
					</ul>
                </div>
            </div>
        </div>
        <!-- End Header Top -->

Route::get('/', [Frontend\TopbarController::class, 'show'])->name('partial.topbar');

why am I getting this error
0 likes
9 replies
Michael Fayez's avatar

@Sinnbeck

<?php

namespace App\Http\Controllers\Frontend;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Topbar;

class TopbarController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
      
       
        $topbars   = Topbar::latest()->get();
    
        return view ('partial.topbar', compact('topbar'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show(Topbar $topbar)
    {
        $topbars   = Topbar::latest()->get();
    
        return view ('partial.topbar', compact('topbar'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}
1 like
vincent15000's avatar

@Michael Fayez

public function show(Topbar $topbar)
{
    $topbars   = Topbar::latest()->get(); // $topbars with an s
    
    return view ('partial.topbar', compact('topbars')); // topbars with an s
}

But it's not logical because you display one topbar via the show method. And in your view it looks like you intend to show several topbars.

Are you sure that the blade code you are showing is really the partial.topbar view ?

Michael Fayez's avatar

@vincent15000 I've solved the issue

class FrontendController extends Controller
{
    public function index()
    {
        $topbars   = Topbar::latest()->get();
        return view('welcome', compact('topbars',));
    }
Route::get('/', [Frontend\FrontendController::class, 'index'])->name('welcome');
1 like

Please or to participate in this conversation.