我有依赖注入问题,并将其保存到数据库,我在另一个表单中有一个formType
,我在两个不同的控制器路由中使用它们处理同一个实体:创建一个新的实体和编辑它。当我尝试创建一个新实体并为其设置$user
字段时,它会将用户字段保存为空字符串。
class SomeClass extends AbstractType
{
private $tokenStorage;
private $user;
public function __construct(TokenStorageInterface $tokenStorage)
{
$this->tokenStorage = $tokenStorage;
}
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options) {
$user = $this->tokenStorage->getToken()->getUser();
$builder
->add('price', null, array(
'label' => 'price',
'required' => true,
'translation_domain' => 'some_translation',
'attr' => array(
'placeholder' => 'price'
)
))
->add('user', HiddenType::class, array(
'data' => $user
));
// dump($user);
// exit(0);
}
我已经尝试过并将其转储并进行调试,我发现的是当我转储$ user时我得到了需要firstName
,lastName
等的正确数据,但是当我提交它没有保存到数据库的数据而不是我得到空字符串。然后我在控制器中提交后抛出整个表单,发现用户字段为空。
但是,当我去编辑路线并编辑现有实体时,它确实有效,但是如果我在编辑表单上创建新实体,它确实适用于存在的实体,而不是新制作的实体。
我还检查了控制器和Entity类本身,这些都不是问题。