Php 使用setData()设置formBuilder中特定字段的值?
我实际上正在使用symfony创建一个api。 我有一个特殊的需求,需要创建一个带有post请求的ressource。我必须更新更新的_at字段,以便使用vichuploaderBundle上传文件。一切都很好,但现在我想使用我的表单创建一个带有Post请求的Post 这是我以前在我的后置控制器中是如何做的Php 使用setData()设置formBuilder中特定字段的值?,php,api,field,symfony,formbuilder,Php,Api,Field,Symfony,Formbuilder,我实际上正在使用symfony创建一个api。 我有一个特殊的需求,需要创建一个带有post请求的ressource。我必须更新更新的_at字段,以便使用vichuploaderBundle上传文件。一切都很好,但现在我想使用我的表单创建一个带有Post请求的Post 这是我以前在我的后置控制器中是如何做的 public function postPostsAction(Request $request) { $post = new Post(); $post->s
public function postPostsAction(Request $request)
{
$post = new Post();
$post->setTitle($request->get('title'))
->setDescription($request->get('description'))
->setImageName($request->get('image_name'))
->setImageFile($request->files->get('imageFile'))
// It is required that at least one field changes if you are using doctrine
// otherwise the event listeners won't be called and the file is lost
->setUpdatedAt(new \DateTime());
// On fait appel à doctrine pour seter un id lors de la création en base
$em = $this->get('doctrine.orm.entity_manager');
$em->persist($post);
$em->flush();
return $post;
}
下面是我如何使用我的表单
public function postPostsAction(Request $request)
{
$post = new Post();
$form = $this->createForm(PostType::class, $post);
$form->submit($request->request->all()); // Validation des données
if ($form->isValid()) {
$em = $this->get('doctrine.orm.entity_manager');
$em->persist($post);
$em->flush();
return $post;
} else {
return $form;
}
}
这是我的表格
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('title')->add('description')->add('imageName')->add('imageFile', FileType::class)
->add('updated_at');
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Post',
//An API must be stateless, Cross-Site Request Forgery must be disable
'csrf_protection' => false,
'allow_extra_fields' => true,
));
}
我想用\new dateTime()之类的东西设置更新的\u at,以使我的用户不指定自己为更新的\u at。我看到使用setData()是可能的,但我不知道如何处理生成器中的特定字段,而不是所有生成器本身。谢谢您对我的问题的帮助和反馈
这是我的邮递员,如果($form->isValid()){$post->setUpdatedAt(new\DateTime());…我以前试过,没有返回错误,但是我的图片不再保存在指定的目录中(我正在使用vichuploader上载文件),事实是,我的第一部分代码运行良好,但与表单不兼容。因为您在
formBuilder
方法中将添加更新了\u添加字段到表单中。现在,如果该字段为空,则表单无效。请从表单中删除该字段。即使没有该字段,文件也不会保存在目录中,任何错误都会被恢复ned……如果($form->isValid()){$post->setUpdatedAt(new\DateTime());…
我以前试过,没有返回错误,但是我的图片不再保存在指定的目录中(我正在使用vichuploader上载文件),事实是,我的第一部分代码运行良好,但与表单不兼容。因为您在formBuilder
方法中将添加更新了\u添加字段到表单中。现在,如果该字段为空,则表单无效。请从表单中删除该字段。即使没有该字段,文件也不会保存在目录中,任何错误都会被恢复内德……我迷路了