Symfony 不推荐使用的用户:该;fos“用户.更改密码.表格.工厂”;服务是私人的
我得到以下错误。我正在使用symfony 3.4和fos捆绑包。此错误发生在密码更改路由上。如果有人能很快帮上忙,请告诉我。我有点着急 这不是一个错误。 这是一个警告,我认为这个信息是不言自明的 在没有看到您的代码的情况下,我无法确定到底出了什么问题,但这里是我的假设: 您必须通过Symfony 不推荐使用的用户:该;fos“用户.更改密码.表格.工厂”;服务是私人的,symfony,fosuserbundle,Symfony,Fosuserbundle,我得到以下错误。我正在使用symfony 3.4和fos捆绑包。此错误发生在密码更改路由上。如果有人能很快帮上忙,请告诉我。我有点着急 这不是一个错误。 这是一个警告,我认为这个信息是不言自明的 在没有看到您的代码的情况下,我无法确定到底出了什么问题,但这里是我的假设: 您必须通过$container->get('fos\u user.change\u password.form\u factory')调用该服务,警告说这不再是正确的方式,您应该进行依赖性注入 看看它是如何工作的,这不是一个错误
$container->get('fos\u user.change\u password.form\u factory')
调用该服务,警告说这不再是正确的方式,您应该进行依赖性注入
看看它是如何工作的,这不是一个错误。
这是一个警告,我认为这个信息是不言自明的
在没有看到您的代码的情况下,我无法确定到底出了什么问题,但这里是我的假设:
您必须通过$container->get('fos\u user.change\u password.form\u factory')
调用该服务,警告说这不再是正确的方式,您应该进行依赖性注入
查看一下,看看它是如何工作的我假设您正试图在控制器中使用表单工厂,如下所示:
$this->get('fos_user.change_password.form.factory');
在symfony中,您可以定义symfony将在请求时创建的类。它们通常在中定义
- config/services.yaml
- config/services.xml
- 或config/services.php
serviceA:
class: AppBundle\Service\ServiceA
arguments:
$email: 'test@domain.com'
serviceB:
class: AppBundle\Service\ServiceB
arguments:
$serviceA: '@serviceA'
@符号很重要:它告诉容器您要传递id为serviceA的服务,而不仅仅是字符串“serviceA”
服务的定义是:
class serviceA {
public function __construct($email) {
}
}
class serviceB {
public function __construct(ServiceA $serviceA) {
}
}
在本例中,serviceA是serviceB的依赖项,这意味着symfony在创建serviceB时也将创建serviceA(如果尚未创建),并将其提供给serviceB的构造函数
服务被声明为私有或公共
自symfony 3.4以来,默认情况下服务是私有的:
您不能直接通过服务容器访问私有服务,必须将它们注入其他服务或控制器(通过将控制器定义为服务)
如果要在控制器中使用它,例如MyController,请首先将控制器定义为服务:
AppBundle\Controller\MyController:
class: AppBundle\Controller\MyController
public: true
arguments:
$formFactory: '@fos_user.change_password.form.factory'
并将控制器更改为:
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use FOS\UserBundle\Form\Factory\FormFactory;
/**
* @Route(service="AppBundle\Controller\MyController")
*/
class MyController {
private $changePasswordFormFactory;
public function __construct(FormFactory $formFactory) {
$this->changePasswordFormFactory = $formFactory;
}
}
有趣的是,在FOS用户捆绑回购协议中也提出了同样的请求,但随后被合并,但又被还原:
我假设您正试图在控制器中获取表单工厂,如下所示:
$this->get('fos_user.change_password.form.factory');
在symfony中,您可以定义symfony将在请求时创建的类。它们通常在中定义
- config/services.yaml
- config/services.xml
- 或config/services.php
serviceA:
class: AppBundle\Service\ServiceA
arguments:
$email: 'test@domain.com'
serviceB:
class: AppBundle\Service\ServiceB
arguments:
$serviceA: '@serviceA'
@符号很重要:它告诉容器您要传递id为serviceA的服务,而不仅仅是字符串“serviceA”
服务的定义是:
class serviceA {
public function __construct($email) {
}
}
class serviceB {
public function __construct(ServiceA $serviceA) {
}
}
在本例中,serviceA是serviceB的依赖项,这意味着symfony在创建serviceB时也将创建serviceA(如果尚未创建),并将其提供给serviceB的构造函数
服务被声明为私有或公共
自symfony 3.4以来,默认情况下服务是私有的:
您不能直接通过服务容器访问私有服务,必须将它们注入其他服务或控制器(通过将控制器定义为服务)
如果要在控制器中使用它,例如MyController,请首先将控制器定义为服务:
AppBundle\Controller\MyController:
class: AppBundle\Controller\MyController
public: true
arguments:
$formFactory: '@fos_user.change_password.form.factory'
并将控制器更改为:
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use FOS\UserBundle\Form\Factory\FormFactory;
/**
* @Route(service="AppBundle\Controller\MyController")
*/
class MyController {
private $changePasswordFormFactory;
public function __construct(FormFactory $formFactory) {
$this->changePasswordFormFactory = $formFactory;
}
}
有趣的是,在FOS用户捆绑回购协议中也提出了同样的请求,但随后被合并,但又被还原:
您可以单击链接查看图像。事实上,我是stackoverflow的新手,这篇文章的编辑有点奇怪。下次发布之前,请花一些时间创建有价值的问题。你可以单击链接查看图片。事实上,我是stackoverflow的新手,这篇文章的编辑有点奇怪。下次发布之前,请花些时间提出有价值的问题。