Ashwani Garg
Ashwani Garg

Reputation: 1527

Getting error in Laravel 5.7 edit route page not found

Laravel Version 5.7 PHP 7+

I created a resource controller -> CategoryController [having all the magic methods]

This is the routes/web.php

Route::group(['as'=>'admin.','middleware'=>['auth','admin'],'prefix'=>'admin'], function(){
    Route::get('/dashboard','AdminController@dashboard')->name('dashboard');

    // product resource controller methods
    // check php artisan r:l
    Route::resource('product', 'ProductController');
    Route::resource('category', 'CategoryController');

    Route::resource('profile', 'ProfileController');
    Route::post('remove', 'CategoryController@remove')->name('category.remove');
});
enter image description here


Now as you can see, I have "http://127.0.0.1:8000/admin/category/1/edit" for one of my categories to edit with category id = 1, that is also stored in the database.

<?php

namespace App\Http\Controllers;

use App\Category;
use Illuminate\Http\Request;

class CategoryController extends Controller
{
    public function index()
    {
        $categories = Category::paginate(3);
        return view('admin.categories.index',compact('categories'));
    }
    
    public function edit(Category $category)
    {
        return "This is category edit page";
        // dd($category);
        //  $categories = Category::where('id','!=', $category->id)->get();
        // //  dd($categories);
        // return "This is category edit page";
        //  return view('admin.categories.create',['categories' => $categories, 'category'=>$category]);
    }

When I try to go to this edit category page, it shows 404 page not found error.

Although, when I made an individual route for edit method with a closure function to return some text, it worked perfectly.

    Route::get('category/{category}/edit', function($category){
        return $category;
    })->name('category.edit');

Upvotes: 0

Views: 2414

Answers (2)

Shaugi
Shaugi

Reputation: 529

try this

public function edit(Request $category)
{
    return "This is category edit page";
}

Upvotes: 0

Marcin Nabiałek
Marcin Nabiałek

Reputation: 111829

You didn't excluded full error you get, but try to change:

public function edit(Category $category)
{
    return "This is category edit page";
}

into:

public function edit($category)
{
    return "This is category edit page";
}

and see if it helps. If it helps, it means that there is no record matching id you passed or this record is soft deleted (or some additional conditions are not met) - Laravel uses Route model binding to match valid record.

Upvotes: 3

Related Questions