首页 > 解决方案 > ParamConverter 属性 null

问题描述

我的参数转换器有问题。

这些是我的路由:

CrmBundle 路由.yml:

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

PartnerBundle 路由.yml:

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

PartnerBundle 默认控制器:

    /*
     * @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"

你对此有什么解释吗?

此致

标签: symfony

解决方案


您还需要在那里添加类。那是你的问题。检查我的代码。

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
            ]
        );
    }
}

所以它会抛出错误,它无法猜测,因为你没有传递类的完整命名空间名称。


推荐阅读