2014-01-29 7 views
2

Я использую symfony @ParamConverter в своем контроллере, чтобы получить объект по его slug, но вместо использования метода «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' 
} 

ответ

8

Я была такая же проблема, закрепленное, добавив опцию ID в 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

0

Создать новый метод в хранилище для прокси вызов

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

я боюсь что я не объяснил свою проблему правильно, я только что обновил свой вопрос. Thansk для вашего ответа в любом случае. – beni0888

+1

Примените ту же идею, напишите метод, изменяющий аргумент из одного типа в другой. – Maks3w

Смежные вопросы