首先,我不在乎如何解决这个问题,我会对解决方案感到满意。
我需要创建一个允许用户动态激活/停用捆绑包的应用程序。
为了让它更容易,并且让自己免于头疼,我不会使用
Doctrine,但将文件保存到users目录中
dir:/users/{username}/activated_bdls.ini
并循环浏览文件
从AppKernel.php
开始相应地激活捆绑包。
根据配置文件的不同,将新目录推送到bundle数组中一样简单:
$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();
答案 0 :(得分: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 :(得分:0)
当然,我无法理解为什么你想要捆绑包的不同之处 按要求提供。
也许为了节省麻烦,你可以在控制器范围(一些索引/登陆页面或更好的login_check)中写入用户名,例如/ users / currentuser
在你的AppKernel中你可以读到这个文件,某事。喜欢:
class AppKernel extends Kernel {
private $currentUser;
public function __construct($environment, $debug) {
parent::__construct($environment, $debug);
$this->currentUser = trim(file_get_contents(__DIR__ . '/../users/currentuser'));
}