我的User类中有setAttribute($ key,$ value)和getAttribute($ key,$ default)函数。 用户通过身份验证后,我想设置几个要设置的属性,稍后将在各种控制器中使用。

我尝试在成功处理程序函数中设置属性:

public function onAuthenticationSuccess(Request $request, TokenInterface $token)
{
      $token->getUser()->setAttribute("user_data_set", 1);
 }

但是当我尝试在控制器中调用它时,尚未设置该值

public function indexAction(Request $request) {

    //Get the logged in user
    $user = $this->getUser(); 
    //Entity Manager
    $em = $this->getDoctrine()->getManager();

    // this page is just used as the starting point to redirect the user to the appropriate page
    if($user->getAttribute("user_data_set", 0) == 1)
    {
        //Get Symfony1 route from the user data table
        $old_homepage = $user->getAttribute("user_homepage", "@default_homepage");
        //Convert route to Symfony2 format
        $new_homepage = $this->setForwardingAddress($old_homepage);

        return $this->redirect($this->generateUrl($new_homepage));
    }
    else
    {
        return $this->redirect('login');
    }        


}

如何修改全局用户而不是本地引用?

#1楼 票数:1 已采纳

显然,您需要交叉请求解决方案,因此您需要使用DBsession

例如:

// Injecting Session service
public function __construct(Session $session){
    $this->session = $session
}

public function onAuthenticationSuccess(Request $request, TokenInterface $token)
{
    $this->session->set('user_data_set', 1);
}

然后在您的控制器中:

$foo = $session->get('user_data_set');

这就是你想要的吗?

  ask by IT_Guy translate from so

未解决问题?本站智能推荐:

1回复

Symfony2全局功能

我想为我的Symfony 2应用程序提供一个全局函数集(跨多个控制器和实体),其作用类似于内置的PHP函数。 例如: 我可以创建一个包含以下功能的文件,但需要为每个名称空间复制一个文件: 处理此问题的最佳方法是什么?
2回复

Symfony2全局功能

例如,我有算法函数,它计算特定的哈希码。 函数本身是300多行代码。 我需要在我的捆绑包中的许多不同控制器中多次使用该功能。 我在哪里可以存储我的calculate_hash()以在我的捆绑中使用它? 我可以从其他捆绑包中访问它吗? 我还可以编写可以访问实体管理器的全局calculat
1回复

如何在symfony2中更改用户的全局会话

注释更改utilisateur连接会话ut ut utis会话utilisateur j实用程序fosuserbundle dans Symfony2 例如:utilisateur连接器us1更改程序会话couranteàus2
2回复

Symfony2:如何使用表单修改当前用户的实体?

我正在尝试添加一个简单的表单,以允许我的用户编辑其个人资料。 我的问题是: 由于“链接”到表单的实体与当前用户对象相同( $user === $entity ,请参见下文),因此,如果表单验证失败,则将使用修改后的用户对象呈现视图(即无效形式的值)。 这是我的(经典)控制器: 所以
1回复

设置全局参数Symfony2

我正在使用Symfony2。 对于我的应用程序,我需要为此设置一些全局参数。 我在我的parameters.ini文件中将参数定义为: 我可以使用以下代码在控制器中访问它: 当我使用FOSUserBundle时,我已经覆盖了ProfileHandler类,并且在该类中我想使用该参数
1回复

symfony2,用户列表

我尝试对所有用户进行选择。 管理员可以从用户那里更改信息。 例如,电子邮件地址。 我需要对所有用户进行选择,然后管理员选择一个用户,然后他可以更改其信息。 我怎样才能做到这一点? 最好的问候 我试图这样做: 然后我有这个错误: 尝试在C:\\ Users \\ ale
1回复

教义和Symfony2有多个tomtomany参考

这是我的问题。 我的捆绑包中有几个实体。 我正在尝试制作捆绑包来管理电影。 但是,在某些情况下,演员也可以是导演,反之亦然。 因此,我将其命名为“艺术家”。 然后,在电影实体的每部电影中,我都希望分配几个“艺术家”作为导演,几个作为演员,几个作为编剧/作家。 但是,我无法通过Many
1回复

小胡子的Symfony2服务参考

我有一个mustache模板,其中包含以下行 {{{widgets.service_name.js.footer}}} 我发现在symfony2捆绑包中定义了相应的服务 .js.footer (symfony2服务名称的前缀)中是否有特定于mustache含义,我找不到与此相关的任何