Hello @automica , Thanks for your assistance so far anyway I've tried doing as you stated above but nothing happens. I also noticed that the code for the menus has already been implemented but they aren't working either.
Below are the file in relation to the pro;
../views/layouts/front/category-nav.blade.php
<ul class="list-unstyled list-inline nav navbar-nav">
@foreach($categories as $category)
<li>
@if($category->children()->count() > 0)
@include('layouts.front.category-sub', ['subs' => $category->children])
@else
<a @if(request()->segment(2) == $category->slug) class="active" @endif href="{{route('front.category.slug', $category->slug)}}">{{$category->name}} </a>
@endif
</li>
@endforeach
</ul>
../views/layouts/front/category-sidebar-sub.blade.php
@foreach($subs as $sub)
<a href="{{ route('front.category.slug', $category->slug) }}">{{ $category->name }}</a>
<ul class="list-unstyled sidebar-category-sub">
<li @if(request()->segment(2) == $sub->slug) class="active" @endif ><a href="{{ route('front.category.slug', $sub->slug) }}">{{ $sub->name }}</a></li>
</ul>
@endforeach
views/layouts/front/category-sub.blade.php
<div class="dropdown">
<a @if(request()->segment(2) == $category->slug) class="active" @endif href="{{route('front.category.slug', $category->slug)}}" class="dropdown-toggle" id="{{$category->slug}}" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">{{$category->name}} <span class="caret"></span></a>
<ul class="dropdown-menu" aria-labelledby="{{$category->slug}}">
@foreach($subs as $sub)
<li><a href="{{route('front.category.slug', $sub->slug)}}">{{$sub->name}}</a></li>
@endforeach
</ul>
</div>
views/layouts/front/header-cart.blade.php
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
@include('layouts.front.category-nav')
<ul class="nav navbar-nav navbar-right">
@if(auth()->check())
<li class="visible-xs"><a href="{{ route('accounts', ['tab' => 'profile']) }}"><i class="fa fa-home"></i> My Account</a></li>
<li class="visible-xs"><a href="{{ route('logout') }}"><i class="fa fa-sign-out"></i> Logout</a></li>
@else
<li class="visible-xs"><a href="{{ route('login') }}"> <i class="fa fa-lock"></i> Login</a></li>
<li class="visible-xs"><a href="{{ route('register') }}"> <i class="fa fa-sign-in"></i> Register</a></li>
@endif
<li id="cart" class="menubar-cart visible-xs">
<a href="{{ route('cart.index') }}" title="View Cart" class="awemenu-icon menu-shopping-cart">
<i class="fa fa-shopping-cart" aria-hidden="true"></i>
<span class="cart-number">{{ $cartCount }}</span>
</a>
</li>
<li>
<!-- search form -->
<form action="{{route('search.product')}}" method="GET" class="form-inline" style="margin: 15px 0 0;">
<div class="input-group">
<input type="text" name="q" class="form-control" placeholder="Search..." value="{!! request()->input('q') !!}">
<span class="input-group-btn">
<button type="submit" id="search-btn" class="btn btn-flat"><i class="fa fa-search"></i> Search</button>
</span>
</div>
</form>
<!-- /.search form -->
</li>
</ul>
</div><!-- /.navbar-collapse -->
../views/layouts/front/app.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id={{ env('GOOGLE_ANALYTICS') }}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{ env('GOOGLE_ANALYTICS') }}');
</script>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ config('app.name') }}</title>
<title>Kessela Cosmetics</title>
<meta name="description" content="A Ghanaian Online Cosmetics Shop">
<meta name="tags" content="modern, e-commerce, free, kessela, shopping, responsive, fast, Mtn, Money, storefront">
<meta name="author" content="Tom Collins">
<link href="{{ asset('css/style.min.css') }}" rel="stylesheet">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="{{ asset('https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js')}}"></script>
<script src="{{ asset('https://oss.maxcdn.com/respond/1.4.2/respond.min.js')}}"></script>
<![endif]-->
<link rel="apple-touch-icon" sizes="57x57" href="{{ asset('favicons/apple-icon-57x57.png')}}">
<link rel="apple-touch-icon" sizes="60x60" href="{{ asset('favicons/apple-icon-60x60.png')}}">
<link rel="apple-touch-icon" sizes="72x72" href="{{ asset('favicons/apple-icon-72x72.png')}}">
<link rel="apple-touch-icon" sizes="76x76" href="{{ asset('favicons/apple-icon-76x76.png')}}">
<link rel="apple-touch-icon" sizes="114x114" href="{{ asset('favicons/apple-icon-114x114.png')}}">
<link rel="apple-touch-icon" sizes="120x120" href="{{ asset('favicons/apple-icon-120x120.png')}}">
<link rel="apple-touch-icon" sizes="144x144" href="{{ asset('favicons/apple-icon-144x144.png')}}">
<link rel="apple-touch-icon" sizes="152x152" href="{{ asset('favicons/apple-icon-152x152.png')}}">
<link rel="apple-touch-icon" sizes="180x180" href="{{ asset('favicons/apple-icon-180x180.png')}}">
<link rel="icon" type="image/png" sizes="192x192" href="{{ asset('favicons/android-icon-192x192.png')}}">
<link rel="icon" type="image/png" sizes="32x32" href="{{ asset('favicons/favicon-32x32.png')}}">
<link rel="icon" type="image/png" sizes="96x96" href="{{ asset('favicons/favicon-96x96.png')}}">
<link rel="icon" type="image/png" sizes="16x16" href="{{ asset('favicons/favicon-16x16.png')}}">
<link rel="manifest" href="{{ asset('favicons/manifest.json')}}">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="{{ asset('favicons/ms-icon-144x144.png')}}">
<meta name="theme-color" content="#ffffff">
@yield('css')
<meta property="og:url" content="{{ request()->url() }}"/>
@yield('og')
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="{{ asset('https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js') }}"></script>
</head>
<body>
<noscript>
<p class="alert alert-danger">
You need to turn on your javascript. Some functionality will not work if this is disabled.
<a href="https://www.enable-javascript.com/" target="_blank">Read more</a>
</p>
</noscript>
<section>
<div class="hidden-xs">
<div class="container">
<div class="clearfix"></div>
<div class="pull-right">
<ul class="nav navbar-nav navbar-right">
@if(auth()->check())
<li><a href="{{ route('accounts', ['tab' => 'profile']) }}"><i class="fa fa-home"></i> My Account</a></li>
<li><a href="{{ route('logout') }}"><i class="fa fa-sign-out"></i> Logout</a></li>
@else
<li><a href="{{ route('login') }}"> <i class="fa fa-lock"></i> Login</a></li>
<li><a href="{{ route('register') }}"> <i class="fa fa-sign-in"></i> Register</a></li>
@endif
<li id="cart" class="menubar-cart">
<a href="{{ route('cart.index') }}" title="View Cart" class="awemenu-icon menu-shopping-cart">
<i class="fa fa-shopping-cart" aria-hidden="true"></i>
<span class="cart-number">{{ $cartCount }}</span>
</a>
</li>
</ul>
</div>
</div>
</div>
<header id="header-section">
<nav class="navbar navbar-default">
<div class="container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header col-md-2">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="{{ route('home') }}">{{ config('app.name') }}</a>
</div>
<div class="col-md-10">
@include('layouts.front.header-cart')
</div>
</div>
</nav>
</header>
</section>
@yield('content')
@include('layouts.front.footer')
<script src="{{ asset('js/front.min.js') }}"></script>
<script src="{{ asset('js/custom.js') }}"></script>
@yield('js')
</body>
</html>
../views/front/index.blade.php
@extends('layouts.front.app')
@section('og')
<meta property="og:type" content="home"/>
<meta property="og:title" content="{{ config('app.name') }}"/>
<meta property="og:description" content="{{ config('app.name') }}"/>
@endsection
@section('content')
@include('layouts.front.home-slider')
@if($cat1->products->isNotEmpty())
<section class="new-product t100 home">
<div class="container">
<div class="section-title b50">
<h2>{{ $cat1->name }}</h2>
</div>
@include('front.products.product-list', ['products' => $cat1->products->where('status', 1)])
<div id="browse-all-btn"> <a class="btn btn-default browse-all-btn" href="{{ route('front.category.slug', $cat1->slug) }}" role="button">browse all items</a></div>
</div>
</section>
@endif
<hr>
@if($cat2->products->isNotEmpty())
<div class="container">
<div class="section-title b100">
<h2>{{ $cat2->name }}</h2>
</div>
@include('front.products.product-list', ['products' => $cat2->products->where('status', 1)])
<div id="browse-all-btn"> <a class="btn btn-default browse-all-btn" href="{{ route('front.category.slug', $cat2->slug) }}" role="button">browse all items</a></div>
</div>
@endif
<hr />
<!--@include('mailchimp::mailchimp')-->
@endsection
../views/front/categories/category.blade.php
@extends('layouts.front.app')
@section('og')
<meta property="og:type" content="category"/>
<meta property="og:title" content="{{ $category->name }}"/>
<meta property="og:description" content="{{ $category->description }}"/>
@if(!is_null($category->cover))
<meta property="og:image" content="{{ asset("storage/$category->cover") }}"/>
@endif
@endsection
@section('content')
<div class="container">
<hr>
<div class="row">
<div class="category-top col-md-12">
<h2>{{ $category->name }}</h2>
{!! $category->description !!}
</div>
</div>
<hr>
<div class="col-md-3">
@include('front.categories.sidebar-category')
</div>
<div class="col-md-9">
<div class="row">
<div class="category-image">
@if(isset($category->cover))
<img src="{{ asset("storage/$category->cover") }}" alt="{{ $category->name }}" class="img-responsive" />
@else
<img src="https://placehold.it/1200x200" alt="{{ $category->cover }}" class="img-responsive" />
@endif
</div>
</div>
<hr>
<div class="row">
@include('front.products.product-list', ['products' => $products])
</div>
</div>
</div>
@endsection
../views/front/categories/sidebar-category.blade.php
<ul class="nav sidebar-menu">
@foreach($categories as $category)
@if($category->children()->count() > 0)
<li>@include('layouts.front.category-sidebar-sub', ['subs' => $category->children])</li>
@else
<li @if(request()->segment(2) == $category->slug) class="active" @endif><a href="{{ route('front.category.slug', $category->slug) }}">{{ $category->name }}</a></li>
@endif
@endforeach
</ul>
../app/http/controllers/front/HomeController.php
<?php
namespace App\Http\Controllers\Front;
use App\Shop\Categories\Repositories\Interfaces\CategoryRepositoryInterface;
class HomeController
{
/**
* @var CategoryRepositoryInterface
*/
private $categoryRepo;
/**
* HomeController constructor.
* @param CategoryRepositoryInterface $categoryRepository
*/
public function __construct(CategoryRepositoryInterface $categoryRepository)
{
$this->categoryRepo = $categoryRepository;
}
/**
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function index()
{
$cat1 = $this->categoryRepo->findCategoryById(2);
$cat2 = $this->categoryRepo->findCategoryById(3);
return view('front.index', compact('cat1', 'cat2'));
}
}
../app/http/controllers/front/CategoryController.php
<?php
namespace App\Http\Controllers\Front;
use App\Shop\Categories\Repositories\CategoryRepository;
use App\Shop\Categories\Repositories\Interfaces\CategoryRepositoryInterface;
use App\Http\Controllers\Controller;
class CategoryController extends Controller
{
/**
* @var CategoryRepositoryInterface
*/
private $categoryRepo;
/**
* CategoryController constructor.
*
* @param CategoryRepositoryInterface $categoryRepository
*/
public function __construct(CategoryRepositoryInterface $categoryRepository)
{
$this->categoryRepo = $categoryRepository;
}
/**
* Find the category via the slug
*
* @param string $slug
* @return \App\Shop\Categories\Category
*/
public function getCategory(string $slug)
{
$category = $this->categoryRepo->findCategoryBySlug(['slug' => $slug]);
$repo = new CategoryRepository($category);
$products = $repo->findProducts()->where('status', 1)->all();
return view('front.categories.category', [
'category' => $category,
'products' => $repo->paginateArrayResults($products, 20)
]);
}
}
../app/Providers/GlobalTemplateServiceProvider.php
<?php
namespace App\Providers;
use App\Shop\Carts\Repositories\CartRepository;
use App\Shop\Carts\ShoppingCart;
use App\Shop\Categories\Category;
use App\Shop\Categories\Repositories\CategoryRepository;
use App\Shop\Employees\Employee;
use App\Shop\Employees\Repositories\EmployeeRepository;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\ServiceProvider;
/**
* Class GlobalTemplateServiceProvider
* @package App\Providers
* @codeCoverageIgnore
*/
class GlobalTemplateServiceProvider extends ServiceProvider
{
/**
* Register bindings in the container.
*
* @return void
*/
public function boot()
{
view()->composer([
'layouts.admin.app',
'layouts.admin.sidebar',
'admin.shared.products'
], function ($view) {
$view->with('admin', Auth::guard('employee')->user());
});
view()->composer(['layouts.front.app', 'front.categories.sidebar-category'], function ($view) {
$view->with('categories', $this->getCategories());
$view->with('cartCount', $this->getCartCount());
});
/**
* breadcumb
*/
view()->composer([
"layouts.admin.app"
], function ($view) {
$breadcumb = [
["name" => "Dashboard", "url" => route("admin.dashboard"), "icon" => "fa fa-dashboard"],
];
$paths = request()->segments();
if (count($paths) > 1) {
foreach ($paths as $key => $pah) {
if ($key == 1)
$breadcumb[] = ["name" => ucfirst($pah), "url" => request()->getBaseUrl() . "/" . $paths[0] . "/" . $paths[$key], 'icon' => config("module.admin." . $pah . ".icon")];
elseif ($key == 2)
$breadcumb[] = ["name" => ucfirst($pah), "url" => request()->getBaseUrl() . "/" . $paths[0] . "/" . $paths[1] . "/" . $paths[$key], 'icon' => config("module.admin." . $pah . ".icon")];
}
}
$view->with(
[
"breadcumbs" => $breadcumb
]
);
});
view()->composer(['layouts.front.category-nav'], function ($view) {
$view->with('categories', $this->getCategories());
});
}
/**
* Get all the categories
*
*/
private function getCategories()
{
$categoryRepo = new CategoryRepository(new Category);
return $categoryRepo->listCategories('name', 'asc', 1)->whereIn('parent_id', [1]);
}
/**
* @return int
*/
private function getCartCount()
{
$cartRepo = new CartRepository(new ShoppingCart);
return $cartRepo->countItems();
}
/**
* @param Employee $employee
* @return bool
*/
private function isAdmin(Employee $employee)
{
$employeeRepo = new EmployeeRepository($employee);
return $employeeRepo->hasRole('admin');
}
}
So observed the above files and notice that the menu is already imported however I can't find why neither functions are working. Please Assist. @automica, Stay Blessed. Thanks again