Skip to content
Advertisement

Error 404 on a view that exists on routes. The URL exists as well as the view but it keeps returning error 404

I am getting an error 404 from a view that actually exists in my routes. This is the view where I select the data from (sidebar.blade.php)

<div class="col-xl-3 col-lg-3 col-sm-12 col-xs-12 sidebar-shop-left">
                    <div class="product-categori">
                        <div class="search-product">
                            <form action="#">
                                <input class="form-control" placeholder="Search here..." type="text">
                                <button type="submit"> <i class="fa fa-search"></i> </button>
                            </form>
                        </div>
                        <div class="filter-sidebar-left">
                            <div class="title-left">
                                <h3>Categories</h3>
                            </div>
                            <div class="list-group list-group-collapse list-group-sm list-group-tree" id="list-group-men" data-children=".sub-men">
                                @foreach($categories as $cat)
                                <div class="list-group-collapse sub-men">
                                    <a class="list-group-item list-group-item-action" href="#{{$cat->id}}" data-toggle="collapse" aria-expanded="true" aria-controls="sub-men1">{{$cat->name}}
                                </a>
                                    <div class="collapse hide" id="{{$cat->id}}" data-parent="#list-group-men">
                                    @foreach($cat->categories as $subcat)
                                    @if($subcat->status==1)
                                        <div class="list-group">
                                            <a href="{{ asset('resume/'.$subcat->url) }}" class="list-group-item list-group-item-action active">{{$subcat->name}}</a>
                                        </div>
                                        @endif
                                @endforeach
                                    </div>
                                </div>
                                @endforeach
                            </div>
                        </div>


                    </div>
                </div>

This my routes file i.e (web.php).

// use IlluminateSupportFacadesRoute;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/


    // All Routes after Login
    Route::group(['middleware'=>['frontlogin']],function(){

        Route::get('/view-job','frontController@view');

        Route::match(['get', 'post'], '/browse', 'frontController@browse');

        Route::get('/resume/{url}','ResumeController@resumes');

        // Resume Detail Page
        Route::get('/resume/{id}','ResumeController@resume');

    });

    Route::match(['get', 'post'], '/how', 'frontController@how');

    Route::get('/logout', 'AdminController@logout');

This is the controller of the view file frontController.blade.php (browse_categories.blade.php). The function is browse()

namespace AppHttpControllers;

use IlluminateHttpRequest;
use IlluminateSupportFacadesInput;
use IlluminateSupportFacadesMail;
use IlluminateSupportFacadesRedirect;
use AppCategory;
use AppCountry;
use AppEnquiry;
use AppResume;
use AppUser;
use AppJob;
use Validator;
use Auth;
use Session;
use Image;
use DB;

class frontController extends Controller
{

    public function browse(){
        $title='Browse Categories';

        $resume = Resume::get();
        foreach($resume as $key => $val){
            $category_name = Category::where(['id' => $val->category_id])->first();
            $resume[$key]->category_name = $category_name->name;
        }
        $resume = json_decode(json_encode($resume));
        // echo "<pre>"; print_r($resume); die;


        $categories_menu = "";
        $categories = Category::with('categories')->where(['parent_id' => 0])->get();
        $categories = json_decode(json_encode($categories));

        return view('pages.browse_categories')->with(compact('categories_menu', 'categories', 'resume'), 'title', $title);
    }


}

This is the view file I get the error 404 (detail.blade.php)

@section('content')

<!-- Start All Title Box -->
<div class="all-title-box">
        <div class="container">
            <div class="row">
                <div class="col-lg-12">
                    <h2>Details</h2>
                    <!-- <ul class="breadcrumb">
                        <li class="breadcrumb-item"><a href="/">Home</a></li>
                        <li class="breadcrumb-item active">Browse</li>
                    </ul> -->
                </div>
            </div>
        </div>
    </div>
    <!-- End All Title Box -->

    <!-- Start Shop Page  -->
    <div class="shop-box-inner">
        <div class="container">
            <div class="row">
                @include('layouts.frontLayouts.frontSidebar')
                <div class="col-xl-9 col-lg-9 col-sm-12 col-xs-12 shop-content-right">
                    <div class="right-product-box">
                        <div class="product-item-filter row">
                            <div class="col-12 col-sm-8 text-center text-sm-left">
                                <!-- <div class="toolbar-sorter-right">
                                    <span>Sort by </span>
                                    <select id="basic" class="selectpicker show-tick form-control" data-placeholder="$ USD">
                                    <option data-display="Select">Nothing</option>
                                    <option value="1">Popularity</option>
                                    <option value="2">High Price → High Price</option>
                                    <option value="3">Low Price → High Price</option>
                                    <option value="4">Best Selling</option>
                                </select>
                                </div> -->
                                <p>Profile Details</p>
                            </div>
                            <div class="col-12 col-sm-4 text-center text-sm-right">
                                <!-- <ul class="nav nav-tabs ml-auto">
                                    <li>
                                        <a class="nav-link" href="#grid-view" data-toggle="tab"> <i class="fa fa-th"></i> </a>
                                    </li>
                                    <li>
                                        <a class="nav-link active" href="#list-view" data-toggle="tab"> <i class="fa fa-list-ul"></i> </a>
                                    </li> -->
                                </ul>
                            </div>
                        </div>

                        <div class="row product-categorie-box">
                            <div class="tab-content">
                                <!-- <div role="tabpanel" class="tab-pane fade" id="grid-view">
                                    <div class="row">

                                        <div class="col-sm-6 col-md-6 col-lg-4 col-xl-4">
                                        @foreach($resume as $res)
                                            <div class="products-single fix">
                                                <div class="box-img-hover">
                                                @if(!empty($res->image))
                                                    <img src="{{ asset('/images/uploads/passport/small/'.$res->image) }}" class="img-fluid" alt="Image">
                                                    @endif
                                                    <div class="mask-icon">
                                                        <a class="cart" href="{{ url('/resume/'.$res->id) }}">View Profile</a>
                                                    </div>
                                                </div>
                                                <div class="why-text">
                                                    <h4>{{ $res->user_name}}</h4>
                                                    <h5> {{ $res->category_name}}</h5>
                                                </div>
                                            </div>
                                        </div>
                                        @endforeach
                                    </div>
                                </div> -->

                                <div role="tabpanel" class="tab-pane fade show active" id="list-view">
                                    <div class="list-view-box">
                                        <div class="row">
                                            <div class="col-sm-6 col-md-6 col-lg-4 col-xl-4">
                                                <div class="products-single fix">
                                                    <div class="box-img-hover">
                                                        <!-- <div class="type-lb">
                                                            <p class="sale">Sale</p>
                                                        </div> -->
                                                        <img src="{{ asset('/images/uploads/passport/medium/'.$resumeDetails->image) }}" class="img-fluid" alt="Image">
                                                        <!-- <div class="mask-icon">
                                                            <ul>
                                                                <li><a href="#" data-toggle="tooltip" data-placement="right" title="View"><i class="fas fa-eye"></i></a></li>
                                                                <li><a href="#" data-toggle="tooltip" data-placement="right" title="Compare"><i class="fas fa-sync-alt"></i></a></li>
                                                                <li><a href="#" data-toggle="tooltip" data-placement="right" title="Add to Wishlist"><i class="far fa-heart"></i></a></li>
                                                            </ul>

                                                        </div> -->
                                                    </div>
                                                </div>
                                            </div>
                                            <div class="col-sm-6 col-md-6 col-lg-8 col-xl-8">
                                                <div class="why-text full-width">
                                                    <h4>{{ $resumeDetails ->user_name }}</h4>
                                                    <h5>Expected Salary ${{ $resumeDetails->salary}}</h5>
                                                    <p>Staff Information: {{ $resumeDetails->summary}}</p>
                                                    <a class="btn hvr-hover" href="#">Message</a>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>

                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- End Shop Page -->

    @endsection

This is the controller of the view file where I get the error 404 i.e detail.blade.php (Resume Controller) The function is resume

namespace AppHttpControllers;

use IlluminateHttpRequest;
use IlluminateSupportFacadesInput;
use IlluminateSupportFacadesMail;
use IlluminateSupportFacadesRedirect;
use IlluminateSupportFacadesValidator;
use AppResume;
use AppCategory;
use AppCountry;
use AppUser;
use Auth;
use Session;
use Image;
use DB;

class ResumeController extends Controller
{


    public function resumes($url=null){

        $categoryCount = Category::where(['url'=>$url,'status'=>1])->count();
        if($categoryCount==0){
            abort(404);
        }

        $categories = Category::with('categories')->where(['parent_id' => 0])->get();

        $categoryDetails = Category::where(['url'=>$url])->first();
        if($categoryDetails->parent_id==0){
            $subCategories = Category::where(['parent_id'=>$categoryDetails->id])->get();
            $subCategories = json_decode(json_encode($subCategories));
            foreach($subCategories as $subcat){
                $cat_ids[] = $subcat->id;
            }

            $resumeAll = Resume::whereIn('resume.category_id', $cat_ids)->where('resume.status','1')->orderBy('resume.id','Desc');
            $breadcrumb = "<a href='/'>Home</a> / <a href='".$categoryDetails->url."'>".$categoryDetails->name."</a>";
        }else{
            $resumeAll = Resume::where(['resume.category_id'=>$categoryDetails->id])->where('resume.status','1')->orderBy('resume.id','Desc');
            $mainCategory = Category::where('id',$categoryDetails->parent_id)->first();
            $breadcrumb = "<a href='/'>Home</a> / <a href='".$mainCategory->url."'>".$mainCategory->name."</a> / <a href='".$categoryDetails->url."'>".$categoryDetails->name."</a>";   
        }

        $resumeAll = $resumeAll->paginate(6);
        // $resumeAll = json_decode(json_encode($resumeAll));
        // echo "<pre>"; print_r($resumeAll); die;

        return view('pages.listing')->with(compact('categories','resumeAll','categoryDetails','url','breadcrumb'));


    }

    public function resume($id = null){

         // Show 404 Page if resume is disabled
         $resumeCount = Resume::where(['id'=>$id,'status'=>1])->count();
         if($resumeCount==0){
             abort(404);
         }

         // Get resume Details
         $resumeDetails = Resume::with('experience')->where('id',$id)->first();
         $relatedResumes = Resume::where('id','!=',$id)->where(['category_id' => $resumeDetails->category_id])->get();

         $categories = Category::with('categories')->where(['parent_id' => 0])->get();

         $categoryDetails = Category::where('id',$resumeDetails->category_id)->first();
         if($categoryDetails->parent_id==0){
             $breadcrumb = "<a href='/'>Home</a> / <a href='".$categoryDetails->url."'>".$categoryDetails->name."</a> / ".$resumeDetails->user_name;
         }else{
             $mainCategory = Category::where('id',$categoryDetails->parent_id)->first();
             $breadcrumb = "<a style='color:#333;' href='/'>Home</a> / <a style='color:#333;' href='/resume/".$mainCategory->url."'>".$mainCategory->name."</a> / <a style='color:#333;' href='/resume/".$categoryDetails->url."'>".$categoryDetails->name."</a> / ".$resumeDetails->user_name;   
         }

         $meta_title = $resumeDetails->user_name;
        $meta_description = $resumeDetails->summary;
        $meta_keywords = $resumeDetails->user_name;
        return view('pages.detail')->with(compact('resumeDetails','categories','relatedResumes','meta_title','meta_description','meta_keywords','breadcrumb'));
    }

    public function deleteResume($id = null){
        Resume::where(['id'=>$id])->delete();
        return redirect()->back()->with('flash_message_success', 'Resume has been deleted successfully');
    }

}

Advertisement

Answer

Overall Solution: Replace url('/resume/'.$res->id) with action('ResumeController@resume', $resume). You may have to rearrange the order of your two url same routes. I highly recommend that you make them separate urls or remove the parameter from the one.

Solution to Current Problem: You can run php artisan route:list and it’ll give you an output of every single valid route. From there, you’ll be able to see the issue.

Side note: You can use any instead of match.

User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement