将参数传递给Symfony @ParamConverter

问题描述:

我在我的控制器中使用symfony @ParamConverter来通过它的slu get获取实体,但不是使用“findBySlug()”方法,而是使用更具体的方法“findWithSomeFeaturesBySlug($ slug)“,我有一个问题,因为在findWithSomeFeaturesBySlug($ slug)方法中,我使用'slug'键而不是slug的值来接收$ slug参数作为关联数组。将参数传递给Symfony @ParamConverter

我的控制器的代码如下所示:

/** 
* @Route("/some-route/{slug}") 
* @ParamConverter("object", class="AcmeBundle:Object", options={"repository_method" = "findWithSomeFeaturesBySlug"}) 
*/ 
public function acmeDemoAction(Object $object) 
{ 
    // Controller code here 
} 

我希望有人能帮助我。

谢谢。

UPDATE:

对不起,我认为我没有正确地解释我的问题。问题是我在“findWithSomeFeaturesBySlug($ slug)”函数中得到了一个关联数组,我需要直接获取$ slug值。

// ObjectRepository 
public function findWithSomeFeatures($slug) 
{ 
    // here I get an associative array in the slug parameter: 
    // $slug = array('slug' => 'some_value') 
    // And I need $slug = 'some_value' 
} 

我有同样的问题,通过在ParamConverter

/** 
* @Route("/some-route/{slug}") 
* @ParamConverter("object", class="AcmeBundle:Object", options={"id" = "slug", "repository_method" = "findWithSomeFeaturesBySlug"}) 
*/ 
public function acmeDemoAction(Object $object) 
{ 
    // Controller code here 
} 
+0

+1这真的解决了这个问题。 – VisioN

在你的仓库创建一个新的方法进行代理呼叫

findSlugXXXX($slug) { 
    $this->findWithSomeFeaturesBySlug(array('slug' => $slug)); 
} 
+0

恐怕添加id选项固定我没有正确解释我的问题,我刚刚更新了我的问题。无论如何Thankk为您的答案。 – beni0888

+1

应用相同的想法编写一个方法,将参数从一种类型更改为另一种类型。 – Maks3w