ParamConverter属性为null

时间:2018-08-02 12:37:15

标签: symfony

我的参数转换器有问题。

这些是我的路线:

CrmBundle routing.yml:

crm_partner:
    resource: "@PartnerBundle/Resources/config/routing.yml"
    prefix:   /{urlname}

PartnerBundle routing.yml:

crm_partner_dashboard:
    path:     /dashboard
    defaults: { _controller: PartnerBundle:Default:dashboard }

PartnerBundle DefautController:

    /*
     * @ParamConverter("department", options={"mapping":{"urlname":"urlName"}})
     */
    public function dashboardAction(Department $department)
    {
        ...        
    }

这是我的错误:

Unable to guess how to get a Doctrine instance from the request information for parameter "department".

这是我的请求属性。...

_controller      
         "PartnerBundle\Controller\DefaultController::dashboardAction"
_firewall_context           "security.firewall.map.context.main"
_locale                     "fr"
_route                      "crm_partner_dashboard"
_route_params               "urlname" => "shbyjm-europe-1"
                            "_locale" => "fr"
urlname                     "shbyjm-europe-1"

您对此有解释吗?

最诚挚的问候

2 个答案:

答案 0 :(得分:0)

您还需要在此处添加课程。那是你的问题。检查我的代码。

class PostsController extends Controller
{
    /**
     * @param Post $post
     * @ParamConverter("post", class="AppBundle\Entity\Post")
     * @return Response
     */
    public function showAction(Post $post): Response
    {
        if (!isset($post)) {
            throw $this->createNotFoundException('Post with the provided route not found!');
        }
        return $this->render(
            '@App/pages/post.html.twig',
            [
                'post' => $post
            ]
        );
    }
}

因此,由于您没有传递类完整名称空间名称。

,这使您无法猜测,从而引发错误。

答案 1 :(得分:0)

感谢您的帮助。

为了使我的代码成功,我创建了自己的ParamConverter,现在它可以完美运行。

我认为问题在于我的参数位于路由的第一级,并且没有正确使用或查找。

无论如何,再次感谢