我使用这个版本来实现这两个包。但是,我希望用户为他的帐户设置一个密码,因此在成功的身份验证和用户创建之后,他将被更改为一个表单,在那里他将输入该密码。因为FOSUBUserProvider是一个服务,所以我想再做一个处理密码表单的服务。我将第二个服务注入到第一个服务中,但是我需要@templating,我已经将它设置为一个参数,但是我不知道如何接受它,而且我收到了他失踪的警告。我该怎么解决这个问题?
# /FOSUBUserProvider
$passwordSetter = Controller::get('register_social_password_picker');我知道它需要第二个参数(对于templating),我从哪里获得它呢?还是我走错路了?
class RegisterPassword
{
protected $user;
protected $templating;
public function __construct($user, $templating)
{
$this->user = $user;
$this->templating = $templating;
}
...
}services.yml
my_user_provider:
class: AppBundle\Security\Core\FOSUBUserProvider
arguments: [@fos_user.user_manager,{facebook: facebook_id, twitter: twitter_id, linkedin: linkedin_id}, "@register_password" ]
register_password:
class: AppBundle\Service\RegisterPassword
arguments: ["@templating" ]LE: services.yml
register_password:
class: AppBundle\Service\RegisterPassword
arguments: [ setMailer, ["@templating"] ]
class RegisterPassword
{
protected $user;
protected $templating;
public function __construct( )
{
}
public function setPassword(User $user, $templating)
{
$this->templating = $templating;
...
}发布于 2015-10-15 15:22:19
您的问题是服务构造函数需要两个参数($user和$templating),并且只传递一个参数(@模板)。这些参数是在构建服务时传递的,因此我的猜测是,您不希望$user成为构造函数的参数(此时您不知道哪个用户将使用该服务),所以只需传递$templating参数,您可以稍后使用不同的调用添加用户。
由于这似乎会产生循环引用问题,因此可以使用以下三种策略中的一种:
发布于 2015-10-23 10:15:11
但是,我尝试的方法有点不太好,登录后的重定向可以很容易地在security.yml>security>firewalls>firewall_name>default_target_path in中设置如下:
default_target_path: /redirecthttps://stackoverflow.com/questions/33152141
复制相似问题