2014-02-14 3 views
1

Я звоню в службу в моем контроллере Simfony2.Symfony2 - вызов статического свойства из службы

Проблем нет, все нормально.

function getFilterListBrandAction($brand_id = 0, $url_params = array()){ 
$b = $this->get('brand.service'); 
return $this->render('BundleMybundle:Page:page.html.twig', array(
      'param1' => $b->getParam(), 
      'do_not_change' => $b::$filter_accepted['brand'] 
     ));  
    } 

Неприятность прибывает, когда я пытаюсь вызвать статическое свойство $b::$filter_accepted['brand'] от службы ранее реализованной. Напротив, у меня нет проблемы для другого метода $b->getParam().

Есть способ вызвать статическое свойство/метод из службы?

+0

Видите ли вы сообщение об ошибке? –

+0

И показать результат 'var_dump ($ filter_accepted ['brand'])' этого массива, пожалуйста –

+0

Я думаю, что это вообще плохая идея. Что, если '$ filter_accepted ['brand']' возвращает некоторое неожиданное значение? Сори, но я не помню, видел ли я такую ​​конструкцию в документации. Может быть, ваша цель - добиться другого? Например, добавьте метод 'checkChangeStatus ($ brand)' в свой 'brand.service'. Вы можете сделать некоторую логику в этом методе и вернуть значение. – NHG

ответ

2

Да, доступ к публичным объектам возможен из службы.

Это работает для меня:

Ваша служба:

/** 
* Your Service 
*/ 
class YourService 
{ 
    public static $filter_accepted = array('brand' => 'my brand'); 
} 

Контроллер

class YourController extends ContainerAware 
{ 
    public function myAction() 
    { 
     $service = $this->container->get('acme.my_service'); 

     var_dump($service::$filter_accepted); 
     // Returns: array(1) { ["brand"]=> string(8) "my brand" } 

     var_dump($service::$filter_accepted['brand']); 
     // Returns: string(8) "my brand" 
    } 
} 
+1

Тогда у вас нет правильного обслуживания. Отправьте код своей службы и файл config.yml, где вы его объявите. Опять же, это должно работать, когда я сам это пробовал. Удачи! – Mick

+1

Большое спасибо. Я был очень глуп. Я искал неправильную услугу! Еще раз спасибо! :) –

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

  • Нет связанных вопросов^_^