首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony FormBuilder GetData

Symfony FormBuilder GetData
EN

Stack Overflow用户
提问于 2016-08-18 22:10:04
回答 3查看 665关注 0票数 1

我正在使用symfony 3和formbuilder。

我创建了一个EditAction来编辑服务:

代码语言:javascript
复制
 /**
 * @Route("/admin/service/edit/{id}", requirements={"id": "\d+"}, name="edit_service")
 */
public function EditAction($id , Request $request){
    $service = $this->getDoctrine()
        ->getRepository('AppBundle:Services')
        ->findOneById($id);
    $form = $this->get('form.factory')->createNamedBuilder('edit_service', ServiceType::class)->getForm();
    $form->handleRequest($request);
    if ($form->isSubmitted() && $form->isValid()){
        die("OK"):
    }
    return $this->render('AppBundle:Admin:EditService.html.twig', [
        'service'        => $service,
        'form'   => $form->createView(),
    ]);
}

现在将使用以下命令创建表单:

代码语言:javascript
复制
class ServiceType extends AbstractType{
        /**
         * {@inheritdoc}
         */
        public function buildForm(FormBuilderInterface $builder, array $options){
            $builder
                ->add('title', TextType::class, [
                    'attr' => ['autofocus' => true],
                    'label' => 'service.title',
                ])
                ->add('text', TextareaType::class, [
                    'attr' => [ 'pattern' => '.{10,}' , 'rows' => '10'],
                    'label' => 'service.text',
                ])
                ->add('submit', SubmitType::class, [
                    'attr' => ['class' => 'btn btn-lg btn-primary'],
                    'label' => 'submit',
                ])
            ;
        }
        /**
         * {@inheritdoc}
         */
        public function configureOptions(OptionsResolver $resolver)
        {
            $resolver->setDefaults([
                'data_class' => Services::class,
            ]);
        }
    }

现在,我正在尝试获取每个输入的当前值。

我还用它来添加一个服务。

下面是我对小树枝的用法:

代码语言:javascript
复制
{{ form_start(form) }}{{ form_end(form) }}

我尝试了不同的方法,但没有成功。谢谢

EN

回答 3

Stack Overflow用户

发布于 2016-08-18 23:26:17

获取表单的输入值有几种不同的方法:

  • $form->getData()['your_field_name']
  • $form->get('your_field_name');
票数 1
EN

Stack Overflow用户

发布于 2016-08-18 22:17:22

$form->getData()是您正在寻找的http://symfony.com/doc/current/forms.html方法

代码语言:javascript
复制
if ($form->isSubmitted() && $form->isValid()){
    $formData = $form->getData();
    die($formData['field_name']);
}

或者像@pavlovich建议的那样

代码语言:javascript
复制
if ($form->isSubmitted() && $form->isValid()){
    die($form->get('field_name');
}
票数 0
EN

Stack Overflow用户

发布于 2016-08-30 16:54:59

这很简单,我只是这样做:

代码语言:javascript
复制
$service = $this->getDoctrine()
    ->getRepository('AppBundle:Services')
    ->findOneById($id);
$form = $this->get('form.factory')->createNamedBuilder('edit_service', ServiceType::class , $service)->getForm();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39020434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档