2016-04-23 133 views
1

當我試着使用,以獲得當前目錄:Symfony2的:獲取當前目錄錯誤

$this->container->getParameter('kernel.root_dir').'/../web/

我得到這個錯誤:Fatal error: Using $this when not in object context in C:\XXX on line 124

代碼:

class AdminController { 

/** 
* Add event controller. 
* 
* @param Request $request Incoming request 
* @param Application $app Silex application 
*/ 
public function addEventAction(Request $request, Application $app) { 
    $event = new Event(); 
    $types= $app['dao.type']->findAllSelectList(); 
    $eventForm = $app['form.factory']->create(new EventType($types), $event); 
    $eventForm->handleRequest($request); 
    if ($eventForm->isSubmitted() && $eventForm->isValid()) { 
     var_dump($event->getCoverImageLink()); 
     $file = $event->getCoverImageLink(); 
     $fileName = md5(uniqid()).'.'.$file->guessExtension(); 
     var_dump($fileName); 
     //$path = $this->container->getParameter('kernel.root_dir').'/../web';//$this->get('kernel')->getRootDir() . '/../web'; 
     var_dump($this); 
     $app['dao.event']->save($event); 
     $app['session']->getFlashBag()->add('success', 'The event was successfully created.'); 
    } 
    return $app['twig']->render('event_form.html.twig', array(
     'title' => 'New event', 
     'eventForm' => $eventForm->createView())); 
} 

如何請修復此錯誤?什麼是正確的功能使用?

+0

你在哪裏把這個代碼?該錯誤消息表明您沒有將代碼放在類中(或者您正在使用的方法是'static')。 – xabbuh

+0

不僅如此,而且你的代碼中沒有$ this->容器。 – Cerad

+0

我真的不知道如何得到這個目錄。什麼是使用功能? – YoannLth

回答

0

看起來您使用的是Silex而不是Symfony 2。作爲一個非常簡約的框架,silex並沒有爲您提供Symfony所做的所有配置和依賴注入的好東西。

能夠檢索應用程序根目錄的最簡單方法是自己在bootstrap.php中定義它。只需在上面添加的東西是這樣的:

define('APP_ROOT', __DIR__ . '/../'); 

現在你可以使用常量在你的控制器:

public function addEventAction(Request $request, Application $app) { 
    ... 

    $path = APP_ROOT . '/../web'; 

    ... 
}