使用setData()设置formBuilder中特定字段的值?

时间:2017-02-17 19:02:28

标签: php api field symfony formbuilder

我实际上在使用symfony创建的api。 我特别需要使用post请求创建一个ressource。我必须更新我的updated_at字段以使用vichuploaderBundle上传文件。一切都运作良好,但现在我想使用我的表单创建一个帖子请求发布。

以下是我之前在PostController中的做法。

 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,
    ));
}

我想将updated_at设置为类似\ new dateTime()的东西,以使我的用户不指定自己为updated_at。我看到setData()可以实现,但不知道如何对构建器中的特定字段进行操作,而不是所有构建器本身。感谢帮助和反馈我的问题!

这是我的邮递员,如果它可以帮助postman post request

0 个答案:

没有答案