有没有办法从Symfony2 AppKernel.php中找出当前的用户名?

时间:2015-01-20 09:50:34

标签: php symfony symfony-2.3

首先,我不在乎如何解决这个问题,我会对解决方案感到满意。

我需要创建一个允许用户动态激活/停用捆绑包的应用程序。

为了让它更容易,并且让自己免于头疼,我不会使用 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();

2 个答案:

答案 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'));

    }