Во-первых, мне все равно, как это решить, я был бы счастлив с решением вообще.
Мне нужно создать приложение, которое позволяет пользователям динамически активировать / деактивировать пакеты.
Чтобы облегчить это и уберечь себя от головной боли, я не буду использовать
Доктрина, но сохранить файл в каталог пользователей
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();
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()
}
}
Я не буду ставить этот вопрос лучше, если вы придумали менее грязное решение.
Конечно, я не могу понять, почему вы когда-нибудь хотите, чтобы связки отличались на
на основе запроса.
возможно, чтобы избежать головной боли, вы можете написать имя пользователя, когда вы находитесь в области действия контроллера (некоторый индекс / лендинг или лучше на 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'));
}