【发布时间】:2019-04-03 12:46:02
【问题描述】:
我正在尝试覆盖 FOSUser 捆绑用户创建命令。
但是当我启动我的新命令时,我得到了这个错误:
无法自动装配服务“Site\PagesBundle\Command\CreateUserCommand”: 方法的参数“$userManipulator” “FOS\UserBundle\Command\CreateUserCommand::__construct()” 参考资料 类 "FOS\UserBundle\Util\UserManipulator" 但没有这样的服务 存在。您可能应该将此类别名为现有的 “fos_user.util.user_manipulator”服务。
似乎在我之前没有人遇到过这个问题。然而,我尊重教程、导入以及所需的一切。
我给你看我的代码:
<?php
namespace Site\PagesBundle\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use FOS\UserBundle\Model\User;
use FOS\UserBundle\Command\CreateUserCommand as BaseCommand;
class CreateUserCommand extends BaseCommand
{
/**
* @see Command
*/
protected function configure()
{
parent::configure();
$this
->setName('atelech:user:create')
->getDefinition()->addArguments(array(
new InputArgument('nom', InputArgument::REQUIRED, 'Le nom'),
new InputArgument('prenom', InputArgument::REQUIRED, 'Le prenom')
))
;
$this->setHelp(<<<EOT
// L'aide qui va bien
EOT
);
}
/**
* @see Command
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$username = $input->getArgument('username');
$email = $input->getArgument('email');
$password = $input->getArgument('password');
$nom = $input->getArgument('nom');
$prenom = $input->getArgument('prenom');
$inactive = $input->getOption('inactive');
$superadmin = $input->getOption('super-admin');
/** @var \FOS\UserBundle\Model\UserManager $user_manager */
$user_manager = $this->getContainer()->get('fos_user.user_manager');
/** @var \Acme\AcmeUserBundle\Entity\User $user */
$user = $user_manager->createUser();
$user->setUsername($username);
$user->setEmail($email);
$user->setPlainPassword($password);
$user->setEnabled((Boolean) !$inactive);
$user->setSuperAdmin((Boolean) $superadmin);
$user->setNom($nom);
$user->setPrenom($prenom);
$user_manager->updateUser($user);
$output->writeln(sprintf('Created user <comment>%s</comment>', $username));
}
/**
* @see Command
*/
protected function interact(InputInterface $input, OutputInterface $output)
{
parent::interact($input, $output);
if (!$input->getArgument('nom')) {
$nom = $this->getHelper('dialog')->askAndValidate(
$output,
'Please choose a nom:',
function($nom) {
if (empty($nom)) {
throw new \Exception('nom can not be empty');
}
return $nom;
}
);
$input->setArgument('nom', $nom);
}
if (!$input->getArgument('prenom')) {
$prenom = $this->getHelper('dialog')->askAndValidate(
$output,
'Please choose a prenom:',
function($prenom) {
if (empty($prenom)) {
throw new \Exception('prenom can not be empty');
}
return $prenom;
}
);
$input->setArgument('prenom', $prenom);
}
}
}
我想添加两个属性“name”和“first name”
感谢您的帮助!
【问题讨论】:
-
我从来没有使用过 FosUserBundle 但教程真的很老而且与 symfony2 版本相关而不是 3.4 (这些版本之间有很大的变化)。
-
是的,我知道,但这只是为了一件小事^^
标签: php symfony fosuserbundle