我试图在Symfony 4项目中创建自定义命令
class AppOauthClientCreateCommand extends ContainerAwareCommand
{
protected function configure()
{
$this
->setName('app:oauth-client:create')
->setDescription('Create a new OAuth client');
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$clientManager = $this->getContainer()->get('fos_oauth_server.client_manager.default');
$client = $clientManager->createClient();
$client->setAllowedGrantTypes(array(OAuth2::GRANT_TYPE_USER_CREDENTIALS));
$clientManager->updateClient($client);
$output->writeln(sprintf('client_id=%s_%s', $client->getId(), $client->getRandomId()));
$output->writeln(sprintf('client_secret=%s', $client->getSecret()));
}
}
当我尝试运行此命令时,出现以下错误
编译容器时,“fos_oauth_server.client_manager.default”服务或别名已被删除或内联。您应该将其公开,或者停止直接使用容器,改用依赖项注入。
如何公开供应商服务,或者我在命令配置中遗漏了什么?
您需要检查/bin/console debug:autowiring
命令的输出,以获得适当的接口,以便在构造函数中使用“fos\u oauth\u server.client\u manager.*”。应已设置自动布线,以允许容器识别并从那里插入。
这将需要对SF4的FosOauthServer支持,并且在构造函数中还记得调用parent::\uu construct()
以正确设置命令。您可以这样做,但仍然可以使用containerWareCommand来-
问题是,自Symfony 4以来,所有服务都是Deafult私有的。事实上,使用服务容器的get
方法无法获取私有服务。
您应该避免将整个contanier注入到您的服务中(或通过扩展containerwarecommand
来插入命令)。相反,您应该只注入所需的服务:
class AppOauthClientCreateCommand
{
/**
* @var ClientManagerInterface
*/
private $clientManager;
public function __construct(ClientManagerInterface $clientManager)
{
$this->clientManager = $clientManager;
}
protected function configure()
{
...
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$client = $this->clientManager->createClient();
...
}
}
如果ClientManagerInterface
不是自动生成的,那么您必须在services.yaml.中配置具有适当依赖性的AppOauClientCreateCommand
services:
App\Command\AppOauthClientCreateCommand:
arguments:
$clientManager: "@fos_oauth_server.client_manager.default"
希望这有帮助。
3.3 自定义命令 命令语法 定义命令与定义映射的用法其实很相似: :command {lhs} {rhs} 只不过在使用自定义命令时,{lhs} 是直接输入到命令行中的,当你按下回车时,vim 就将 {lhs} 替换为 {rhs} 再执行。所以这在形式上与下面这个映射等效: : nnoremap :{lhs}<CR> :{rhs}<CR> 当然,由于 :command 所支持的参数与 :ma
问题内容: 我有一个名为“ example”的库,该库正在安装到我的全局site- packages目录中。但是,我希望能够安装两个版本,一个用于生产版本,一个用于测试版本(我有一个Web应用程序,而其他东西也都以这种方式进行了版本化)。 有没有一种方法可以指定,例如“ python setup.py stage”,它不仅可以将其他鸡蛋安装到站点程序包中,还可以将模块从“ example”重命名为
假设我需要一个新的git命令gitnew,它生成一个新分支,该分支与origin/master是最新的。 是否有一种方法可以使此脚本在powershell的Windows上的所有存储库中都可用? 编辑:为了澄清我想要一个git脚本,而不是一个PowerShell函数。我提到PowerShell的唯一原因是因为我不使用git bash。
应用服务启动可以在多个地方进行调整,以下介绍两种方案,Dockerfile 和 平台详情页调整 Dockerfile CMD启动方式 看一下简单的例子: FROM hub.kpaas.nsini.com/app/hello:v0.0.3 CMD ["/go/bin/hello"] 启动命令写在CMD这个后面,如果后面有多个参数可以以逗号隔开例如: CMD ["static-web", "-pa
经过之前编章的介绍,我们知道在 Python 中,常见的容器类型有: dict, tuple, list, string。其中也提到过可容器和不可变容器的概念。其中 tuple, string 是不可变容器,dict, list 是可变容器。 可变容器和不可变容器的区别在于,不可变容器一旦赋值后,不可对其中的某个元素进行修改。当然具体的介绍,可以看回之前的文章,有图文介绍。 那么这里先提出一个问题
是否可以使用用户扩展在Selenium IDE中创建自定义命令.js并使其能够将自身更改为自定义导出格式,如果是这样,如何? 我将使用SeleniumIDE记录测试,这些测试将以完全自定义的Java格式导出,作为全自动测试系统的一部分运行。格式不是JUnit,而是每个测试都是它自己的类,并根据整个系统的输入动态加载。 我想要做的是在Selenium IDE中创建一个名为“take snapshot