Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用setData()设置formBuilder中特定字段的值?_Php_Api_Field_Symfony_Formbuilder - Fatal编程技术网

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

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

我实际上正在使用symfony创建一个api。 我有一个特殊的需求,需要创建一个带有post请求的ressource。我必须更新更新的_at字段,以便使用vichuploaderBundle上传文件。一切都很好,但现在我想使用我的表单创建一个带有Post请求的Post

这是我以前在我的后置控制器中是如何做的

 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添加
字段到表单中。现在,如果该字段为空,则表单无效。请从表单中删除该字段。即使没有该字段,文件也不会保存在目录中,任何错误都会被恢复内德……我迷路了