Родительский контроллер не разрешает параметр «User $ user», но «$ id» - PullRequest
1 голос
/ 05 ноября 2019

У меня есть родительский контроллер «UserController» и дочерний контроллер «UserCartController». В отличие от всех других контроллеров, FOSRest отказывается от следующего определения:

class UserController extends AbstractFOSRestController
{
    // [...]

    /**
     * @param User $user
     * @return View
     */
    public function getUserAction(User $user): View
    {
        return new View([]);
    }
}

Это приводит к следующей ошибке:

Every parent controller must have `get{SINGULAR}Action(\$id)` method where {SINGULAR} is a singular form of associated object in [...]/config/../src/GDS/[BundleNameHere]/Resources/config/user_routes.yaml (which is being imported from "[...]/config/routes.yaml"). Make sure there is a loader supporting the "rest" type.

Как только я меняю заголовок следующим образом ...

class UserController extends AbstractFOSRestController
{
    // [...]

    /**
     * @param User $user
     * @return View
     */
    public function getUserAction($id): View
    {
        return new View([]);
    }
}

Ошибка больше не появляется. Какова причина? Во всех других контроллерах вы можете разрешать экземпляры модели.

В результате мои маршруты выглядят не очень элегантно. :)

/api/users/{id}.{_format}

# vs.

/api/carts/{cart}.{_format}

Заранее спасибо!

...