Когда я пытаюсь получить текущий каталог с:
$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()));
}
Как исправить эту ошибку, пожалуйста? Какова правильная функция?
Похоже, вы используете Silex
, а не Symfony 2
. Будучи очень минималистичной структурой, silex не дает вам всех возможностей для настройки и зависимостей инъекций, которые Symfony делает.
Самый простой способ получить корневой каталог приложения - определить его самостоятельно в bootstrap.php
. Просто добавьте что-то вроде этого вверху:
define('APP_ROOT', __DIR__ . '/../');
Теперь вы можете просто использовать константу в своем контроллере:
public function addEventAction(Request $request, Application $app) {
...
$path = APP_ROOT . '/../web';
...
}
static
).