Symfony — Есть ли способ узнать текущее имя пользователя из Symfony2 AppKernel.php?

Во-первых, мне все равно, как это решить, я был бы счастлив с решением вообще.

Мне нужно создать приложение, которое позволяет пользователям динамически активировать / деактивировать пакеты.

Чтобы облегчить это и уберечь себя от головной боли, я не буду использовать
Доктрина, но сохранить файл в каталог пользователей
dir:/users/{username}/activated_bdls.ini и цикл по файлам
от AppKernel.php активировать связки соответственно.

Это так же просто, как вставить новые каталоги в массив bundles в зависимости от файла конфигурации:

$bundles[] = new Acme\Bundle\DemoBundle\DemoBundle();

На данный момент зацикленный файл имеет жестко закодированный путь
dir:/users/{hardcoded_username}/activated_bdls.ini, который должен быть заменен текущим именем пользователя.

Я пытался использовать это, не работает, но может дать вам представление.

$current_username = new \Gabriel\LayoutBundle\Controller\profileController;
$current_username = $current_username->getCurrentUsernameAction();

1

Решение

Appkernel загружается снова каждый раз, когда пользователь перезагружает страницу,
Поэтому после входа в систему установите переменную текущего сеанса пользователя.

// logincontroller
$_SESSION['username'] = $this->getUser()->getUsername();

// поскольку страница перезагружается при входе в систему, вы можете получить к ней доступ из AppKernel

session_start();
if(isset($_SESSION['username']))
{
$username = $_SESSION['username'];
read_stuff_from = ':dir/'.$username.'/file'
for(loop_through_logic)
{
doStuff()
}
}

Я не буду ставить этот вопрос лучше, если вы придумали менее грязное решение.

1

Другие решения

Конечно, я не могу понять, почему вы когда-нибудь хотите, чтобы связки отличались на
на основе запроса.

возможно, чтобы избежать головной боли, вы можете написать имя пользователя, когда вы находитесь в области действия контроллера (некоторый индекс / лендинг или лучше на login_check) в файл, например, / users / currentuser

и в вашем AppKernel вы можете прочитать этот файл, sth. лайк:

class AppKernel extends Kernel {

private $currentUser;

public function __construct($environment, $debug) {
parent::__construct($environment, $debug);
$this->currentUser = trim(file_get_contents(__DIR__ . '/../users/currentuser'));

}
0

По вопросам рекламы [email protected]