2016-11-19 2 views
0

Мой код Helper класса, как показано ниже:Как получить путь корня в вспомогательном классе - Symfony2

public function getPlaceholders() 
{ 
    try { 
     echo $this->getParameter('kernel.root_dir'); 
    } catch (ParseException $e) { 
     printf("Unable to parse the YAML string: %s", $e->getMessage()); 
    } 
    return $this->placeholders; 
} 

Это возвращение ошибки, как показано ниже:

Attempted to call an undefined method named "getParameter" of class "AppBundle\Helper\Placeholders". 

Пожалуйста, советы мне на него.

+1

Средства ошибок, не существует 'метода getParameter' на классе' Placeholders'. – Federkun

+0

Итак, как использовать getParameter в моем классе помощников? @Federkun –

+1

'getParameter' - это метод контейнера, просто введите его в« Placeholders »и используйте его. (http://stackoverflow.com/questions/17126277/how-to-give-container-as-argument-to-services) – Federkun

ответ

1

Инжектируйте контейнер

services: 
    app.helper.placeholders: 
     class: AppBundle\Helper\Placeholders 
     arguments: ['@service_container'] 

и использовать методы доступа контейнера для параметров:

namespace AppBundle\Helper; 

use Symfony\Component\DependencyInjection\ContainerInterface; 

class Placeholders 
{  
    private $container; 

    public function __construct(ContainerInterface $container) 
    { 
     $this->container = $container; 
    } 

    public function getPlaceholders() 
    { 
     $root_dir = $this->container->getParameter('kernel.root_dir'); 

     // ... 
+0

Это нормально, но я должен назвать это контроллером, поэтому я пишу, как: $ placeholders = new Placeholders(); Так что я должен передать аргумент в новых Placeholders(); потому что __construct имеет один аргумент. –

+1

Я не всеведущий, вы знаете: 'new Placeholders ($ this-> container)' – Federkun

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