Symfony1 symfony 1.4-将当前登录用户注入条令模型

Symfony1 symfony 1.4-将当前登录用户注入条令模型,symfony1,dependency-injection,doctrine,Symfony1,Dependency Injection,Doctrine,我想在不使用sfContext单例的情况下,以完全可测试性的方式将当前登录用户的id注入到Doctrine_记录类的creator_id字段中。我发现了一些类似的条令行为,但它们在侦听器中或(在我发现的另一个示例中)在条令记录子类的save方法中访问sfContext单例。 我想在symfony控制器中找到一个入口点,在这里我可以注入当前登录的用户,并将其保留到请求结束。 我该怎么办? 希望我已经够清楚了 编辑: 正如@jeremy所建议的,我制作了一个自定义过滤器: class userFil

我想在不使用sfContext单例的情况下,以完全可测试性的方式将当前登录用户的id注入到Doctrine_记录类的creator_id字段中。我发现了一些类似的条令行为,但它们在侦听器中或(在我发现的另一个示例中)在条令记录子类的save方法中访问sfContext单例。 我想在symfony控制器中找到一个入口点,在这里我可以注入当前登录的用户,并将其保留到请求结束。 我该怎么办? 希望我已经够清楚了

编辑: 正如@jeremy所建议的,我制作了一个自定义过滤器:

class userFilter extends sfFilter
{
  public function execute($filterChain)
  {
    $user = $this->getContext()->getUser();
    if ($user->isAuthenticated()) {
      $guard = $user->getGuardUser();
      Doctrine_Manager::getInstance()->setAttribute('logged_in_user', $guard->getId());
    }

    // Execute next filter
    $filterChain->execute();
  }
}
因此,现在我的测试和任务都是无上下文的,在开始与db交互之前,我只需在某个点设置正确的用户Id:

Doctrine_Manager::getInstance()->setAttribute('logged_in_user', sfConfig::get('default_user'));

好问题!在任何地方使用
sfContext
都是Symfony 1的一个更丑陋的方面,将其设置为
Doctrine\u Manager
听起来是个不错的主意

最好在
ProjectConfiguration
中发生的
configureDoctrine
回调中执行此操作(请参见下文)。我现在不是100%的用户,如果不是,最好的选择是定制过滤器()


好问题!在任何地方使用
sfContext
都是Symfony 1的一个更丑陋的方面,将其设置为
Doctrine\u Manager
听起来是个不错的主意

最好在
ProjectConfiguration
中发生的
configureDoctrine
回调中执行此操作(请参见下文)。我现在不是100%的用户,如果不是,最好的选择是定制过滤器()


谢谢你提出这个问题。我写这封信时就考虑到了这一点。我基本上将返回userId的方法外部化,这样您就可以从会话、条令参数或任何您拥有的地方获取userId。 以下是用于配置返回包含user\u id和user\u name的数组的方法的设置

  # Retrieve User Array from custom implementation
      # [0] => (int)user_id; [1] => (string)user_name;
  getUserArray:
    class_name: Utility
    static_method_name: getUserAuditArray

谢谢你提出这个问题。我写这封信时就考虑到了这一点。我基本上将返回userId的方法外部化,这样您就可以从会话、条令参数或任何您拥有的地方获取userId。 以下是用于配置返回包含user\u id和user\u name的数组的方法的设置

  # Retrieve User Array from custom implementation
      # [0] => (int)user_id; [1] => (string)user_name;
  getUserArray:
    class_name: Utility
    static_method_name: getUserAuditArray

我正在考虑在用户登录时将用户id添加为Doctrine_Manager实例的参数,然后将该参数返回modelHi Giorrgio中的任何位置-您能详细说明一下吗?例如,此时您需要在哪里使用sfContext?:-)我正在考虑在用户登录时将用户id添加为Doctrine_Manager实例的参数,然后将该参数返回modelHi Giorrgio中的任何位置-您能详细说明一下吗?例如,此时您需要在哪里使用sfContext?:-)我将在一周内发布这个插件的更新,所以如果有bug/问题,请告诉我。如果有效,请在symfony网站上标记此答案并确认自己是插件用户:)thanksI将在几周后发布此插件的更新,因此如果有bug/问题,请告诉我。如果有效,请在symfony网站上标记此答案并确认自己是插件用户:)谢谢