Are your routes cached?
php artisan route:clear
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
hello i want to show detail categories , but i get this error
Route [admin.category.detail] not defined.
<a href="{{ route('admin.category.detail',$category->id) }}" class="btn btn-danger">category detail </a>
Route::prefix('admin')->middleware(['auth' , 'isAdmin'])->group(function(){
Route::resource('categories', CategoryController::class);
Route::get('category/{id}/detail' , [CategoryController::class , 'detail'])->name('admin.category.detail');
});
Are your routes cached?
php artisan route:clear
@tykus not work 😥
@mehrdad70 what is the result of php artisan route:list
@tykus In the route list it does not show me the defined route
@mehrdad70 what does it show, can you post it here?
GET|HEAD admin/categories ................................................... admin.categories.index › Admin\CategoryController@index
POST admin/categories ................................................... admin.categories.store › Admin\CategoryController@store
GET|HEAD admin/categories/create .......................................... admin.categories.create › Admin\CategoryController@create
PUT|PATCH admin/categories/{category} ...................................... admin.categories.update › Admin\CategoryController@update
DELETE admin/categories/{category} .................................... admin.categories.destroy › Admin\CategoryController@destroy
GET|HEAD admin/categories/{category}/edit ..................................... admin.categories.edit › Admin\CategoryController@edit
Here's the updated code:
Route::prefix('admin.')->middleware(['auth' , 'isAdmin'])->group(function(){
Route::resource('categories', CategoryController::class);
Route::get('category/{id}/detail' , [CategoryController::class , 'detail'])->name('category.detail');
});
Notice this:
Route::prefix('admin.')
// removed admin. from here because you're already using admin. prefix
->name('category.detail');
... and here's the full example from the docs
Route::name('admin.')->group(function () {
Route::get('/users', function () {
// Route assigned name "admin.users"...
})->name('users');
});
EDIT
Sorry, my bad, I'm confused.
Route::name('admin.')->prefix('admin')->middleware(['auth' , 'isAdmin'])->group(function(){
Route::resource('categories', CategoryController::class);
Route::get('category/{id}/detail' , [CategoryController::class , 'detail'])->name('category.detail');
});
@mehrdad70 the admin. prefix on the resource routes is coming from where; you have a prefix Router method; but that is for the URI only. You are not showing me everything.
The main problem is that it does not bypass the blade section to reach the web.php file, the error is from the same section
@tykus What can I show you?
@mehrdad70 the full routes file; and the app/Http/Kernel.php file.
EDIT the RouteServiceProvider not Kernel 🤦♂️
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array<int, class-string|string>
*/
protected $middleware = [
// \App\Http\Middleware\TrustHosts::class,
\App\Http\Middleware\TrustProxies::class,
\Illuminate\Http\Middleware\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
/**
* The application's route middleware groups.
*
* @var array<string, array<int, class-string|string>>
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array<string, class-string|string>
*/
protected $routeMiddleware = [
'admin' => \App\Http\Middleware\AdminAccessToPanel::class,
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \App\Http\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];
Route::prefix('admin.')->middleware(['auth' , 'isAdmin'])->group(function(){
Route::get('/' , [HomeController::class , 'index'])->name('admin');
Route::resource('users', UserController::class);
Route::get('users/{id}/change-permission' , [UserController::class , 'changePermission'])->name('user.changePermission');
Route::resource('articles', ArticleController::class);
Route::get('article/{articleId}/image/{imageId}/remove' , [ArticleController::class , 'removeImage'])->name('article.removeImage');
Route::get('article/{id}/accept' , [ArticleController::class , 'accept'])->name('article.accept');
Route::get('article/{id}/reject' , [ArticleController::class , 'reject'])->name('article.reject');
Route::get('setting' , [SettingController::class , 'index'])->name('setting.index');
Route::get('setting/create' , [SettingController::class , 'create'])->name('setting.create');
Route::post('setting/store' , [SettingController::class , 'storeSetting'])->name('setting.store');
Route::resource('comments', CommentController::class)->except(['create' , 'store']);
Route::post('comment/reply' , [CommentController::class , 'replyComment'])->name('comment.replyStore');
Route::get('comment/{id}/accept' , [CommentController::class , 'accept'])->name('comment.accept');
Route::get('comment/{id}/reject' , [CommentController::class , 'reject'])->name('comment.reject');
Route::resource('categories', CategoryController::class);
Route::get('legal/{category}/detail' , [CategoryController::class , 'detail'])->name('legal.detail');
Route::get('category/{categoryId}/image/{imageId}/remove' , [CategoryController::class , 'removeImage'])->name('category.removeImage');
});
@mehrdad70 you have changed the name to 'legal.detail'????
@tykus Yes, to test whether the error is fixed or not
try like this
Route::group(['prefix' => 'admin', 'as' => 'admin.', 'middleware' => ['auth', 'isAdmin']], function () {
Route::resource('categories', CategoryController::class);
Route::get('/category/{id}/detail' , [CategoryController::class , 'detail'])->name('category.detail');
});
@RahulKRaj7 route not defied 😌😌
@mehrdad70 That's impossible, did you try @tykus 's answer, php artisan route:clear?
Also, check if you are editing the correct routes/web.php file or editing the right blade file.
@mehrdad70 you passed the route parameter in controller function ?
@RahulKRaj7 yes
there are clear for project every command is for problem
Clear Route Cache:
php artisan route:clear
php artisan config:clear
Clear View Cache:
php artisan cache:clear
@mehrdad70 use
php artisan route:clear
and then see web.php and
php artisan route:list
is your route name ?
GET|HEAD admin/categories ................................................... admin.categories.index › Admin\CategoryController@index
POST admin/categories ................................................... admin.categories.store › Admin\CategoryController@store
GET|HEAD admin/categories/create .......................................... admin.categories.create › Admin\CategoryController@create
PUT|PATCH admin/categories/{category} ...................................... admin.categories.update › Admin\CategoryController@update
DELETE admin/categories/{category} .................................... admin.categories.destroy › Admin\CategoryController@destroy
GET|HEAD admin/categories/{category}/edit ..................................... admin.categories.edit › Admin\CategoryController@edit
@mehrdad70 is it in web.php
@mehrdad70 replace this line from your code
Route::get('category/{id}/detail' , [CategoryController::class , 'detail'])->name('admin.category.detail');
and add this in place of it
Route::resource('category', PhotoController::class)->only([
'detail'
]);
I have finded your error.. Mr @mehrdad70
your are using the resource method and see in your this list that url is not generated by the laravel cmd php artisan route:list.
take a look
GET|HEAD admin/categories ................................................... admin.categories.index › Admin\CategoryController@index
POST admin/categories ................................................... admin.categories.store › Admin\CategoryController@store
GET|HEAD admin/categories/create .......................................... admin.categories.create › Admin\CategoryController@create
PUT|PATCH admin/categories/{category} ...................................... admin.categories.update › Admin\CategoryController@update
DELETE admin/categories/{category} .................................... admin.categories.destroy › Admin\CategoryController@destroy
GET|HEAD admin/categories/{category}/edit ..................................... admin.categories.edit › Admin\CategoryController@edit
when you use resource method then , resouce is only able to call the defined 7 methods only ..not other methods you created on the controller , like you created a method details
Route::resource('categories', CategoryController::class);
Route::get('category/{id}/detail' , [CategoryController::class , 'detail'])->name('admin.category.detail');
Route::get('categories', [CategoryController::class , 'index'])->name('categories.index');
Route::get('categories/craete', [CategoryController::class , 'create'])->name('categories.create');
Route::post('categories/store', [CategoryController::class , 'store'])->name('categories.store');
Route::get('categories/{id}/show', [CategoryController::class , 'show'])->name('categories.show');
Route::get('categories/{id}/edit', [CategoryController::class , 'edit'])->name('categories.edit');
Route::patch('categories/{id}/update', [CategoryController::class , 'update'])->name('categories.update');
Route::delete('categories/{id}/delete', [CategoryController::class , 'destroy'])->name('categories.destroy');
Route::get('categories/{id}/detail', [CategoryController::class , 'detail'])->name('categories.detail');
Route::get('category/{categoryId}/image/{imageId}/remove' , [CategoryController::class , 'removeImage'])->name('category.removeImage');
but not work
Route::get('categories/{id}/detail', change to Route::get('categories/detail/{id}', and other use like this
@LoverCode There is no problem with the web file at all It cannot pass through the blade file
@foreach ($categories as $category )
<tr>
<th scope="row">{{ $category->id }}</th>
<td>{{ $category->name }}</td>
<td>{{ $category->getParentName() }}</td>
<td>
<form action="{{ route('admin.categories.destroy',$category->id) }}" method="POST" id="destroy-menu-{{ $category->id }}">
@csrf
@method('DELETE')
<button type="submit" class="btn-custom">
<i class="mdi mdi-trash-can-outline fa-custom"></i>
</button>
<a href="{{ route('admin.categories.edit',$category->id) }}">
<button type="button" class="btn-custom"><i class="mdi mdi-square-edit-outline fa-custom"></i></button>
</a>
<a href="{{ route('admin.categories.deatil') }}">
<button type="button" class="btn-custom"><i class="mdi mdi-square-edit-outline fa-custom"></i></button>
</a>
</form>
</td>
</tr>
@endforeach
@mehrdad70 copy this code and replace with your code then run ```php artisan route:list`` and show the output here
Route::prefix('admin')->middleware(['auth' , 'isAdmin'])->group(function(){
Route::get('category/{id}/detail' , [CategoryController::class , 'detail']);
Route::resource('categories', CategoryController::class);
Please or to participate in this conversation.