jeudi 11 août 2016

Get the bound route model instance in a generic parent class

I'm using Laravel 5.1's route model binding to infer/instantiate the correct model instance from the routes.

I don't want to rewrite a show() method for each resource, and would rather call parent show() method in a generic parent class. The problem is, I don't know how to allow my parent class's show() method to infer the correct model instance, so I'm forced to create a show() on each child resource and specify the model (like below, User $user).

How can I get the bound model in my controllers from the binding in RouteServiceProvider: App\User? And pass it through to the parent show() method?


Route: $router->get('/users/{user}', 'Resources\Users@show');

RouteServiceProvider.php:

public function boot(Router $router)
{
    parent::boot($router);

    $router->model('user', 'App\User');
}

UsersController.php:

class User extends ResourceController
{

    public function show(Request $request, User $user)
    {
        return $user;
    }

ResourceController.php:

class ResourceController extends Controller
{
    public function show(Request $request, Model $model)
    {
        // Infer "Users" model here and get correct instance
    }



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire