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

kenprogrammer's avatar

InertiaJS Admin LTE Images disappear after route navigation

I've integrated AdminLTE template with Inertia App (Laravel+Svelte). The app is a backend used to manage accounts or tenants in a SAAS app. When I navigate on homepage(/) or /accounts routes the images are visible but when I navigate to any other route e.g. /create the images are not loaded. When I inspect the app I see 404 errors. See images below:

On home or accounts route image 1

Any other route image 1

PHP Code

 public function index()
    {
        $accounts=Account::paginate(10)->through(function ($account) {
            return [
                'id' => $account->id,
                'name' => $account->name,
                'office' => $account->office,
                'phone_no' => $account->phone_no,
                'email' => $account->email,
                'address' => $account->address,
                'created_at' => $account->created_at,
                'account_verified_at' => $account->account_verified_at,
            ];
        });

        return Inertia::render('Accounts/Index',['accounts' =>$accounts]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return Inertia::render('Accounts/Create');
    }

Svelte components Index.svelte

<script>
    import { inertia } from '@inertiajs/inertia-svelte'
    import { page } from '@inertiajs/inertia-svelte'
    import Navbar from '@/Shared/Navbar.svelte'
    import Sidebar from '@/Shared/Sidebar.svelte'
    import Footer from '@/Shared/Footer.svelte'
    import RightSidebar from '@/Shared/RightSidebar.svelte'
    import Pagination  from '@/Shared/Pagination.svelte'

    export let accounts = []

</script>
<div class="wrapper">
    <Navbar/>
    <Sidebar/>
    <!-- Content Wrapper. Contains page content -->
    <div class="content-wrapper">
      <!-- Content Header (Page header) -->
      <div class="content-header">
        <div class="container-fluid">
          <div class="row mb-2">
            <div class="col-sm-6">
              <h1 class="m-0">Starter Page</h1>
            </div><!-- /.col -->
            <div class="col-sm-6">
              <ol class="breadcrumb float-sm-right">
                <li class="breadcrumb-item"><a use:inertia href="!#">Home</a></li>
                <li class="breadcrumb-item active">Starter Page</li>
              </ol>
            </div><!-- /.col -->
          </div><!-- /.row -->
        </div><!-- /.container-fluid -->
      </div>
      <!-- /.content-header -->
  
      <!-- Main content -->
      <div class="content">
        <div class="container-fluid">
            <section class="content">
                <div class="body_scroll">
                    <div class="block-header">
                        <div class="row">
                            <div class="col-lg-7 col-md-6 col-sm-12">
                                <h2>Accounts</h2>
                                <ul class="breadcrumb">
                                    <li class="breadcrumb-item"><a use:inertia href="/"><i class="zmdi zmdi-home"></i> Home</a></li>
                                    <li class="breadcrumb-item active">Accounts</li>
                                </ul>
                                <button class="btn btn-primary btn-icon mobile_menu" type="button"><i
                                        class="zmdi zmdi-sort-amount-desc"></i></button>
                            </div>
                            <div class="col-lg-5 col-md-6 col-sm-12">
                                <button class="btn btn-primary btn-icon float-right right_icon_toggle_btn" type="button"><i
                                        class="zmdi zmdi-arrow-right"></i></button>
                            </div>
                        </div>
                    </div>
                    <div class="container-fluid">
                        {#if $page.props.flash.success}
                            <div class="alert alert-success">
                            { $page.props.flash.success }
                            </div>
                        {:else if $page.props.flash.error}
                            <div class="alert alert-danger">
                            { $page.props.flash.error }
                            </div>
                        {/if}
                        <div class="row clearfix">
                            <div class="col-lg-12">
                                <div class="card">
                                    <div class="header">
                                        <h2><strong>Accounts</strong>&nbsp;List </h2>
                                        <ul class="header-dropdown">
                                            <!-- svelte-ignore a11y-invalid-attribute -->
                                            <li class="dropdown"> <a use:inertia href="javascript:void(0);" class="dropdown-toggle"
                                                    data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
                                                    <i class="zmdi zmdi-more"></i> </a>
                                                <ul class="dropdown-menu dropdown-menu-right slideUp">
                                                    <li><a href="/accounts/create">New Account</a></li>
                                                </ul>
                                            </li>
                                            <li class="remove">
                                                <!-- svelte-ignore a11y-missing-attribute -->
                                                <a role="button" class="boxs-close"><i class="zmdi zmdi-close"></i></a>
                                            </li>
                                        </ul>
                                    </div>
                                    <div class="body">
                                        <div class="table-responsive">
                                            <table
                                                class="table table-bordered table-striped table-hover js-basic-example dataTable">
                                                <thead>
                                                    <tr>
                                                        <th>Name</th>
                                                        <th>Office</th>
                                                        <th>Phone Number</th>
                                                        <th>Email</th>
                                                        <th>Address</th>
                                                        <th>Account Created At</th>
                                                        <th>Account Verified At</th>
                                                    </tr>
                                                </thead>
                                                <tfoot>
                                                    <tr>
                                                        <th>Name</th>
                                                        <th>Office</th>
                                                        <th>Phone Number</th>
                                                        <th>Email</th>
                                                        <th>Address</th>
                                                        <th>Account Created At</th>
                                                        <th>Account Verified At</th>
                                                    </tr>
                                                </tfoot>
                                                <tbody>
                                                    {#each accounts.data as account (account.id)}
                                                    <tr>
                                                        <td>{ account.name }</td>
                                                        <td>{ account.office }</td>
                                                        <td>{ account.phone_no }</td>
                                                        <td>{ account.email }</td>
                                                        <td>{ account.address }</td>
                                                        <td>{ account.created_at }</td>
                                                        <td>{ account.account_verified_at }</td>
                                                        <td></td>
                                                        @endif
                                                    </tr>
                                                    {/each}
                                                </tbody>
                                            </table>
                                            <Pagination links={accounts.links} />
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </section>
        </div><!-- /.container-fluid -->
      </div>
      <!-- /.content -->
    </div>
    <!-- /.content-wrapper -->
  
    <!-- Control Sidebar -->
   <RightSidebar/>
    <!-- /.control-sidebar -->
  
    <!-- Main Footer -->
    <Footer/>
</div>
<!-- ./wrapper -->

Create.svelte

<script>
    import { inertia } from '@inertiajs/inertia-svelte'
    import { useForm } from '@inertiajs/inertia-svelte'
    import Navbar from '@/Shared/Navbar.svelte'
    import Sidebar from '@/Shared/Sidebar.svelte'
    import Footer from '@/Shared/Footer.svelte'
    import RightSidebar from '@/Shared/RightSidebar.svelte'

    let form = useForm({
    name: null,
    phone_no: null,
    email: null,
    address:null
  })

  function handleSubmit() {
    $form.post('/accounts')
  }
</script>
<div class="wrapper">
    <Navbar/>
    <Sidebar/>
    <!-- Content Wrapper. Contains page content -->
    <div class="content-wrapper">
      <!-- Content Header (Page header) -->
      <div class="content-header">
        <div class="container-fluid">
          <div class="row mb-2">
            <div class="col-sm-6">
              <h1 class="m-0">Starter Page</h1>
            </div><!-- /.col -->
            <div class="col-sm-6">
              <ol class="breadcrumb float-sm-right">
                <li class="breadcrumb-item"><a use:inertia href="!#">Home</a></li>
                <li class="breadcrumb-item active">Starter Page</li>
              </ol>
            </div><!-- /.col -->
          </div><!-- /.row -->
        </div><!-- /.container-fluid -->
      </div>
      <!-- /.content-header -->
  
      <!-- Main content -->
      <div class="content">
        <div class="container-fluid">
            <section class="content">
                <div class="body_scroll">
                    <div class="block-header">
                        <div class="row">
                            <div class="col-lg-7 col-md-6 col-sm-12">
                                <h2>New Account</h2>
                                <ul class="breadcrumb">
                                    <li class="breadcrumb-item"><a href="/"><i class="zmdi zmdi-home"></i> Home</a></li>
                                    <li class="breadcrumb-item"><a href="/accounts">Accounts</a></li>
                                    <li class="breadcrumb-item active">New Account</li>
                                </ul>
                                <button class="btn btn-primary btn-icon mobile_menu" type="button"><i
                                        class="zmdi zmdi-sort-amount-desc"></i></button>
                            </div>
                            <div class="col-lg-5 col-md-6 col-sm-12">
                                <button class="btn btn-primary btn-icon float-right right_icon_toggle_btn" type="button"><i
                                        class="zmdi zmdi-arrow-right"></i></button>
                            </div>
                        </div>
                    </div>
                    <div class="container-fluid">
                        <div class="body">
                            <form on:submit|preventDefault={handleSubmit}>
                                <div class="row clearfix">
                                    <div class="col-md-8">
                                        <div class="form-group">
                                            <label for="name">Name:<span style="color:red;">*</span></label>
                                            <input type="text" name="name" class="form-control" placeholder="Consultant's Name" bind:value={$form.name}>
                                            {#if $form.errors.name}<div style="color:red ;">{$form.errors.name}</div>{/if}
                                        </div>
                                    </div>
                                </div>
                                <div class="row clearfix">
                                    <div class="col-md-4">
                                        <div class="form-group">
                                            <label for="phone_no">Phone Number:<span style="color:red;">*</span></label>
                                            <input type="text" name="phone_no" class="form-control" placeholder="Phone Number" bind:value={$form.phone_no}>
                                            {#if $form.errors.phone_no}<div style="color:red ;">{$form.errors.phone_no}</div>{/if}
                                        </div>
                                    </div>
                                    <div class="col-md-4">
                                        <div class="form-group">
                                            <label for="email">Email:<span style="color:red;">*</span></label>
                                            <input type="text" name="email" class="form-control" placeholder="Email" bind:value={$form.email}>
                                            {#if $form.errors.email}<div style="color:red ;">{$form.errors.email}</div>{/if}
                                        </div>
                                    </div>
                                    <div class="col-md-4">
                                        <div class="form-group">
                                            <label for="address">Address:<span style="color:red;">*</span></label>
                                            <input type="text" name="address" class="form-control" placeholder="Address" bind:value={$form.address}>
                                            {#if $form.errors.address}<div style="color:red ;">{$form.errors.address}</div>{/if}
                                        </div>
                                    </div>
                                </div>
                                <button type="submit" disabled={$form.processing} class="btn btn-raised btn-primary btn-round waves-effect">Save</button>
                            </form>
                        </div>
                    </div>
            </section>
        </div><!-- /.container-fluid -->
      </div>
      <!-- /.content -->
    </div>
    <!-- /.content-wrapper -->
  
    <!-- Control Sidebar -->
   <RightSidebar/>
    <!-- /.control-sidebar -->
  
    <!-- Main Footer -->
    <Footer/>
</div>
<!-- ./wrapper -->

Navbar.svelte

<script>
    import { inertia } from '@inertiajs/inertia-svelte'
    import { page } from '@inertiajs/inertia-svelte'
</script>
 <!-- Navbar -->
 <nav class="main-header navbar navbar-expand navbar-white navbar-light">
    <!-- Left navbar links -->
    <ul class="navbar-nav">
      <li class="nav-item">
        <a class="nav-link" data-widget="pushmenu" use:inertia href="!#" role="button"><i class="fas fa-bars"></i></a>
      </li>
      <li class="nav-item d-none d-sm-inline-block">
        <a use:inertia href="!#" class="nav-link">Home</a>
      </li>
      <li class="nav-item d-none d-sm-inline-block">
        <a use:inertia href="!#" class="nav-link">Contact</a>
      </li>
    </ul>

    <!-- Right navbar links -->
    <ul class="navbar-nav ml-auto">
      <!-- Navbar Search -->
      <li class="nav-item">
        <a class="nav-link" data-widget="navbar-search" use:inertia href="!#" role="button">
          <i class="fas fa-search"></i>
        </a>
        <div class="navbar-search-block">
          <form class="form-inline">
            <div class="input-group input-group-sm">
              <input class="form-control form-control-navbar" type="search" placeholder="Search" aria-label="Search">
              <div class="input-group-append">
                <button class="btn btn-navbar" type="submit">
                  <i class="fas fa-search"></i>
                </button>
                <button class="btn btn-navbar" type="button" data-widget="navbar-search">
                  <i class="fas fa-times"></i>
                </button>
              </div>
            </div>
          </form>
        </div>
      </li>

      <!-- Messages Dropdown Menu -->
      <li class="nav-item dropdown">
        <a class="nav-link" data-toggle="dropdown" use:inertia href="{'#'}">
          <i class="far fa-comments"></i>
          <span class="badge badge-danger navbar-badge">3</span>
        </a>
        <div class="dropdown-menu dropdown-menu-lg dropdown-menu-right">
          <a use:inertia href="!#" class="dropdown-item">
            <!-- Message Start -->
            <div class="media">
              <img src="public/img/no_image.jpg" alt="User Avatar" class="img-size-50 mr-3 img-circle">
              <div class="media-body">
                <h3 class="dropdown-item-title">
                  Brad Diesel
                  <span class="float-right text-sm text-danger"><i class="fas fa-star"></i></span>
                </h3>
                <p class="text-sm">Call me whenever you can...</p>
                <p class="text-sm text-muted"><i class="far fa-clock mr-1"></i> 4 Hours Ago</p>
              </div>
            </div>
            <!-- Message End -->
          </a>
          <div class="dropdown-divider"></div>
          <a use:inertia href="!#" class="dropdown-item">
            <!-- Message Start -->
            <div class="media">
              <img src="img/no_image.jpg') }}use:inertia" alt="User Avatar" class="img-size-50 img-circle mr-3">
              <div class="media-body">
                <h3 class="dropdown-item-title">
                  John Pierce
                  <span class="float-right text-sm text-muted"><i class="fas fa-star"></i></span>
                </h3>
                <p class="text-sm">I got your message bro</p>
                <p class="text-sm text-muted"><i class="far fa-clock mr-1"></i> 4 Hours Ago</p>
              </div>
            </div>
            <!-- Message End -->
          </a>
          <div class="dropdown-divider"></div>
          <a use:inertia href="!#" class="dropdown-item">
            <!-- Message Start -->
            <div class="media">
              <img src="img/no_image.jpg" alt="User Avatar" class="img-size-50 img-circle mr-3">
              <div class="media-body">
                <h3 class="dropdown-item-title">
                  Nora Silvester
                  <span class="float-right text-sm text-warning"><i class="fas fa-star"></i></span>
                </h3>
                <p class="text-sm">The subject goes here</p>
                <p class="text-sm text-muted"><i class="far fa-clock mr-1"></i> 4 Hours Ago</p>
              </div>
            </div>
            <!-- Message End -->
          </a>
          <div class="dropdown-divider"></div>
          <a use:inertia href="!#" class="dropdown-item dropdown-footer">See All Messages</a>
        </div>
      </li>
      <!-- Notifications Dropdown Menu -->
      <li class="nav-item dropdown">
        <a class="nav-link" data-toggle="dropdown" use:inertia href="{'#'}">
          <i class="far fa-bell"></i>
          <span class="badge badge-warning navbar-badge">15</span>
        </a>
        <div class="dropdown-menu dropdown-menu-lg dropdown-menu-right">
          <span class="dropdown-header">15 Notifications</span>
          <div class="dropdown-divider"></div>
          <a use:inertia href="!#" class="dropdown-item">
            <i class="fas fa-envelope mr-2"></i> 4 new messages
            <span class="float-right text-muted text-sm">3 mins</span>
          </a>
          <div class="dropdown-divider"></div>
          <a use:inertia href="!#" class="dropdown-item">
            <i class="fas fa-users mr-2"></i> 8 friend requests
            <span class="float-right text-muted text-sm">12 hours</span>
          </a>
          <div class="dropdown-divider"></div>
          <a use:inertia href="!#" class="dropdown-item">
            <i class="fas fa-file mr-2"></i> 3 new reports
            <span class="float-right text-muted text-sm">2 days</span>
          </a>
          <div class="dropdown-divider"></div>
          <a use:inertia href="!#" class="dropdown-item dropdown-footer">See All Notifications</a>
        </div>
      </li>
      <li class="nav-item dropdown user-menu">
        <a use:inertia href="{'#'}" class="nav-link dropdown-toggle" data-toggle="dropdown">
          <img src="img/no_image.jpg" class="user-image img-circle elevation-2" alt={"User Image"}>
          <span class="d-none d-md-inline">{$page.props.auth.user.name}</span>
        </a>
        <ul class="dropdown-menu dropdown-menu-lg dropdown-menu-right">
          <!-- User image -->
          <li class="user-header bg-primary">
            <img src="img/no_image.jpg" class="img-circle elevation-2" alt={"User Image"}>

            <p>
              {$page.props.auth.user.name} - Administrator
              <small>Member since Nov. 2021</small>
            </p>
          </li>
          <!-- Menu Body -->
          <li class="user-body">
            <div class="row">
              <div class="col-4 text-center">
                <a use:inertia href="!#">Followers</a>
              </div>
              <div class="col-4 text-center">
                <a use:inertia href="!#">Sales</a>
              </div>
              <div class="col-4 text-center">
                <a use:inertia href="!#">Friends</a>
              </div>
            </div>
            <!-- /.row -->
          </li>
          <!-- Menu Footer-->
          <li class="user-footer">
            <a use:inertia href="!#" class="btn btn-default btn-flat">Profile</a>
            <button class="btn btn-default btn-flat float-right" use:inertia="{{ href: '/logout', method: 'post' }}" type="button">Logout</button>
          </li>
        </ul>
      </li>
      <li class="nav-item">
        <a class="nav-link" data-widget="fullscreen" use:inertia href="!#" role="button">
          <i class="fas fa-expand-arrows-alt"></i>
        </a>
      </li>
      <li class="nav-item">
        <a class="nav-link" data-widget="control-sidebar" data-slide="true" use:inertia href="!#" role="button">
          <i class="fas fa-th-large"></i>
        </a>
      </li>
    </ul>
  </nav>
  <!-- /.navbar -->

I'm unable to figure out what's happening.

0 likes
9 replies
Sinnbeck's avatar

I cant seem to find a single <img tag in that code?

Sinnbeck's avatar

@kenprogrammer Great. Not sure why you have public in the url? But you need to add a leading / to all urls like this

<img src="/public/img/no_image.jpg" alt="User Avatar" class="img-size-50 mr-3 img-circle">
Sinnbeck's avatar
Sinnbeck
Best Answer
Level 102

@kenprogrammer My guess it that you should not have the /public/ part there :) Unless you foider structure is /public/public/img

<img src="/img/no_image.jpg" alt="User Avatar" class="img-size-50 mr-3 img-circle">
kenprogrammer's avatar

@Sinnbeck This works thanks. What about on initial page load i.e. login page JS is not fully loaded. The page appears ok when refresh. See image below: image 1

kenprogrammer's avatar

@Sinnbeck Basic there's no error. See image image 4

The one you see is for avatar and it's persisting event when the page is ok.

kenprogrammer's avatar

@Sinnbeck Maybe the problem could be that Inertia is not able to load JS on time. I'm loading styles and js based on whether it's login or authenticated app.

app.blade.php

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
    <link href="{{ mix('/css/app.css') }}" rel="stylesheet" />
    <script src="{{ mix('/js/app.js') }}" defer></script>
    <!-- Favicon-->
    <link rel="icon" href="favicon.ico" type="image/x-icon">
    @inertiaHead

    @if(!Request::is('login'))
      <!-- Google Font: Source Sans Pro -->
      <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
      <!-- Font Awesome Icons -->
      <link rel="stylesheet" href="{{ asset('plugins/fontawesome-free/css/all.min.css') }}">
      <!-- Theme style -->
      <link rel="stylesheet" href="{{ asset('css/adminlte.min.css') }}">
    @else
      <!-- Custom Css -->
      <link rel="stylesheet" href="{{ asset('assets/plugins/bootstrap/css/bootstrap.min.css') }}">
      <link rel="stylesheet" href="{{ asset('assets/css/style.min.css') }}">
    @endif
  </head>
  <body @if(!Request::is('login')) class="hold-transition sidebar-mini" @endif>
    @inertia

    @if(!Request::is('login'))
      <!-- jQuery -->
      <script src="{{ asset('plugins/jquery/jquery.min.js') }}"></script>
      <!-- Bootstrap 4 -->
      <script src="{{ asset('plugins/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
      <!-- AdminLTE App -->
      <script src="{{ asset('js/adminlte.min.js') }}"></script>
      <!-- DataTable -->
      <script src="{{ asset('plugins/datatables/jquery.dataTables.min.js') }}"></script>
    @else
      <script src="{{ asset('assets/bundles/libscripts.bundle.js') }}"></script>
      <script src="{{ asset('assets/bundles/vendorscripts.bundle.js') }}"></script> <!-- Lib Scripts Plugin Js -->
    @endif
  </body>
</html>

Please or to participate in this conversation.