After writeing this code in /routes/web.php
Route::bind('article',function($value){
return \App\Article::find($value);
});
voyager won't allow me to edit/read any records from any bread, telling "This action is unauthorized."
Still i am able to add/browse. Edit/read buttons are also visible.
If you change "article" to, lets say "post" in route binding, all works fine.
Steps to reproduce the behavior:
Route::bind('article',function($value){
return \App\Article::find($value);
});
Could you, maybe, provide the error here...? Ideally a full stacktrace, not just a screenshot of the whoops page only showing the top 3 entries
I cant find respective stacktrace in laravel.log(maybe its saved somewhere else, or I dont know).
So I just copyed it from browser.
in聽Handler.php聽line 133
at聽Handler->prepareException(object(AuthorizationException))in聽Handler.php聽line 109
at聽Handler->render(object(Request),聽object(AuthorizationException))in聽Handler.php聽line 47
at聽Handler->render(object(Request),聽object(AuthorizationException))in聽Pipeline.php聽line 82
at聽Pipeline->handleException(object(Request),聽object(AuthorizationException))in聽Pipeline.php聽line 32
at聽Pipeline->Illuminate\Routing{closure}(object(Request))in聽VoyagerAdminMiddleware.php聽line 27
at聽VoyagerAdminMiddleware->handle(object(Request),聽object(Closure))in聽Pipeline.php聽line 148
at聽Pipeline->Illuminate\Pipeline{closure}(object(Request))in聽Pipeline.php聽line 53
at聽Pipeline->Illuminate\Routing{closure}(object(Request))in聽SubstituteBindings.php聽line 41
at聽SubstituteBindings->handle(object(Request),聽object(Closure))in聽Pipeline.php聽line 148
at聽Pipeline->Illuminate\Pipeline{closure}(object(Request))in聽Pipeline.php聽line 53
at聽Pipeline->Illuminate\Routing{closure}(object(Request))in聽VerifyCsrfToken.php聽line 65
at聽VerifyCsrfToken->handle(object(Request),聽object(Closure))in聽Pipeline.php聽line 148
at聽Pipeline->Illuminate\Pipeline{closure}(object(Request))in聽Pipeline.php聽line 53
at聽Pipeline->Illuminate\Routing{closure}(object(Request))in聽ShareErrorsFromSession.php聽line 49
at聽ShareErrorsFromSession->handle(object(Request),聽object(Closure))in聽Pipeline.php聽line 148
at聽Pipeline->Illuminate\Pipeline{closure}(object(Request))in聽Pipeline.php聽line 53
at聽Pipeline->Illuminate\Routing{closure}(object(Request))in聽StartSession.php聽line 64
at聽StartSession->handle(object(Request),聽object(Closure))in聽Pipeline.php聽line 148
at聽Pipeline->Illuminate\Pipeline{closure}(object(Request))in聽Pipeline.php聽line 53
at聽Pipeline->Illuminate\Routing{closure}(object(Request))in聽AddQueuedCookiesToResponse.php聽line 37
at聽AddQueuedCookiesToResponse->handle(object(Request),聽object(Closure))in聽Pipeline.php聽line 148
at聽Pipeline->Illuminate\Pipeline{closure}(object(Request))in聽Pipeline.php聽line 53
at聽Pipeline->Illuminate\Routing{closure}(object(Request))in聽EncryptCookies.php聽line 59
at聽EncryptCookies->handle(object(Request),聽object(Closure))in聽Pipeline.php聽line 148
at聽Pipeline->Illuminate\Pipeline{closure}(object(Request))in聽Pipeline.php聽line 53
at聽Pipeline->Illuminate\Routing{closure}(object(Request))in聽Pipeline.php聽line 102
at聽Pipeline->then(object(Closure))in聽Router.php聽line 574
at聽Router->runRouteWithinStack(object(Route),聽object(Request))in聽Router.php聽line 533
at聽Router->dispatchToRoute(object(Request))in聽Router.php聽line 511
at聽Router->dispatch(object(Request))in聽Kernel.php聽line 176
at聽Kernel->Illuminate\Foundation\Http{closure}(object(Request))in聽Pipeline.php聽line 30
at聽Pipeline->Illuminate\Routing{closure}(object(Request))in聽TransformsRequest.php聽line 30
at聽TransformsRequest->handle(object(Request),聽object(Closure))in聽Pipeline.php聽line 148
at聽Pipeline->Illuminate\Pipeline{closure}(object(Request))in聽Pipeline.php聽line 53
at聽Pipeline->Illuminate\Routing{closure}(object(Request))in聽TransformsRequest.php聽line 30
at聽TransformsRequest->handle(object(Request),聽object(Closure))in聽Pipeline.php聽line 148
at聽Pipeline->Illuminate\Pipeline{closure}(object(Request))in聽Pipeline.php聽line 53
at聽Pipeline->Illuminate\Routing{closure}(object(Request))in聽ValidatePostSize.php聽line 27
at聽ValidatePostSize->handle(object(Request),聽object(Closure))in聽Pipeline.php聽line 148
at聽Pipeline->Illuminate\Pipeline{closure}(object(Request))in聽Pipeline.php聽line 53
at聽Pipeline->Illuminate\Routing{closure}(object(Request))in聽CheckForMaintenanceMode.php聽line 46
at聽CheckForMaintenanceMode->handle(object(Request),聽object(Closure))in聽Pipeline.php聽line 148
at聽Pipeline->Illuminate\Pipeline{closure}(object(Request))in聽Pipeline.php聽line 53
at聽Pipeline->Illuminate\Routing{closure}(object(Request))in聽Pipeline.php聽line 102
at聽Pipeline->then(object(Closure))in聽Kernel.php聽line 151
at聽Kernel->sendRequestThroughRouter(object(Request))in聽Kernel.php聽line 116
at聽Kernel->handle(object(Request))in聽index.php聽line 54
at聽require_once('C:\xampp\htdocs\ionvinaga\public\index.php')in聽server.php聽line 21
And some additional info,later I created an bread for "categories" table, with model called Category.
So when I made bind for "category", like this:
Route::bind('category',function($value){
return \App\Category::find($value);
});
I got this error when trying to edit/read category records.
Can confirm that. Is that wanted by Laravel?
Solution is to bring the model-binding back:
$id = $id instanceof Model ? $id->{$id->getKeyName()} : $id;
This will definitely fix the problem and is not a bad approach either.. People should be able to do model binding with any name if they so choose without conflict
@lawliet5130 @fletch3555 I think this was partially fixed in https://github.com/the-control-group/voyager/commit/bc0489a5f3e6356d9cd4bcf998d271573e68452f but it still needs to be changed in show method.
Can you confirm?
Closing due to inactivity.
This issue has been automatically locked since there has not been any recent activity after it was closed. If you have further questions please ask in our Slack group.
Most helpful comment
Can confirm that. Is that wanted by Laravel?
Solution is to bring the model-binding back:
$id = $id instanceof Model ? $id->{$id->getKeyName()} : $id;