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