Symfony2: получить текущую ошибку каталога

1

Когда я пытаюсь получить текущий каталог с:

$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 ).
  • 0
    Кроме того, в вашем коде нет контейнера $ this->.
Показать ещё 2 комментария
Теги:

1 ответ

0

Похоже, вы используете Silex, а не Symfony 2. Будучи очень минималистичной структурой, silex не дает вам всех возможностей для настройки и зависимостей инъекций, которые Symfony делает.

Самый простой способ получить корневой каталог приложения - определить его самостоятельно в bootstrap.php. Просто добавьте что-то вроде этого вверху:

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

Теперь вы можете просто использовать константу в своем контроллере:

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

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

    ...
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню