有没有办法从 Symfony2 AppKernel.php 中找出当前用户名?
Is there any way to find out the current username from the Symfony2 AppKernel.php?
首先,我不在乎这个问题是如何解决的,我很乐意找到一个解决方案。
我需要创建一个允许用户动态 activate/deactivate 捆绑包的应用程序。
为了让它更容易,也为了让自己免于头痛,我不会使用
Doctrine,但将文件保存到用户目录中
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();
Certainly I can't see why you'd ever want the bundles different on a
per-request basis.
也许为了避免麻烦,您可以在控制器范围内(某些 index/landingpage 或更好的 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'));
}
每次用户重新加载页面时,Appkernel 都会重新加载,
所以用户登录后,设置当前用户session变量
// 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()
}
}
我不会把这个问题设置为最好的,以防你想出一个不那么肮脏的解决方案
首先,我不在乎这个问题是如何解决的,我很乐意找到一个解决方案。
我需要创建一个允许用户动态 activate/deactivate 捆绑包的应用程序。
为了让它更容易,也为了让自己免于头痛,我不会使用
Doctrine,但将文件保存到用户目录中
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();
Certainly I can't see why you'd ever want the bundles different on a per-request basis.
也许为了避免麻烦,您可以在控制器范围内(某些 index/landingpage 或更好的 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'));
}
每次用户重新加载页面时,Appkernel 都会重新加载,
所以用户登录后,设置当前用户session变量
// 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()
}
}
我不会把这个问题设置为最好的,以防你想出一个不那么肮脏的解决方案